我正在创建一个简单的jQuery插件,但在模块化方面遇到了问题。
例如:
$.fn.testMethod = function(option1, option2) {
var something1 = option1;
var something2 = option2;
};当我有多个元素使用这个方法时,我的问题就开始出现了。例如:
$('.element1').testMethod(1, 2);
$('.element2').testMethod(3, 4);如果我要改变周围的东西,第二个元素最终会使用第一个元素的变量。有什么更好的方法可以做到这一点,并将变量锁定到它们正在使用的特定元素?如果这太模糊了,我可以粘贴我的完整代码,但它有点复杂。
发布于 2015-04-18 01:05:59
在使用jQuery插件时,您通常希望执行一个each循环并返回集合。
这也意味着您不能只使用简单的变量,但这正是jQuery的data派上用场的地方。
$.fn.testMethod = function(option1, option2) {
return this.each(function() {
$(this).data('something1', option1);
$(this).data('something2', option2);
// do stuff
var something = $(this).data('something1'); // etc
});
};另一方面,函数中的参数和变量对于每个函数调用都是唯一的,所以第二次函数调用不可能使用第一次调用中的变量,除非您正在做其他奇怪的事情。
https://stackoverflow.com/questions/29705373
复制相似问题