我将事件绑定到指令中的元素,并希望传递循环变量。 如何使用闭包来做到这一点?
for(var i=0; i<events.length; i++) {
switch(events[i]) {
case 'focus' :
var m = i;
element.bind('focus', function(event) {
console.log(m);
});
break;
case 'blur' :
var n = i;
element.bind('blur', function(event) {
console.log(n);
});
break;
}
}
在上面的代码中,我使用变量m和n,但是如果没有它们怎么办呢?
我也试过
element.bind('focus', function(num, event) {
console.log(num);
}(i));
但它没有工作
答案 0 :(得分:2)
创建一个单独的函数,您可以通过传递i
来调用它并返回一个函数,从而创建一个闭包,它具有您在上下文中传递的数字。
function callback(num) {
return function(event) {
console.log(num);
}
}
现在你可以像这样绑定它
element.bind('focus', callback(i));