我正在尝试将点击处理程序分配给在变量中定义的JQuery对象:
some.object.array[8].action = function(data){console.log(data);}
anotherobject = {..}
现在在某个循环中,我需要将此函数分配给点击处理程序:并想传递整个“另一个对象”对象
for (var i = 0; i < foo.length; i++) {
$('<div/>').click(some.object.array[i].action);
}
但是如何传递参数?如果将其封装在某些匿名函数中,那么我将失去作用域...:
for (var i = 0; i < foo.length; i++) {
$('<div/>').click(function() {
some.object.array[i].action(anotherobject)
});
}
因为i
改变了...
我们应该怎么做呢?
有太多方法可以做到这一点:
for (var i = 0; i < foo.length; i++) {
(function(i) {
$('<div/>').click(function() {
some.object.array[i].action(anotherobject);
});
})(i);
}
或者
for (var i = 0; i < foo.length; i++) {
$('<div/>').data("i", i).click(function() {
var i = $(this).data("i");
some.object.array[i].action(anotherobject);
});
});
}
或者
function getClickHandler(callback, parameter) {
return function() { callback(parameter); };
};
for (var i = 0; i < foo.length; i++) {
$('<div/>').click(getClickHandler(some.object.array[i].action, anotherobject));
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句