我遇到的情况是我使用的是具有绑定功能的包/插件。
我用一个代码调用bind,这个代码是当myevents触发回调时的过滤器。在这个场景中,将进行三次调用绑定,一次调用参数' t1'第二次调用' t2'第三个用于' t3'。
当从myevents对象触发事件时,将使用data参数调用回调(取决于代码)。
我的问题是当调用回调函数时,我需要知道最初绑定时循环的索引号。例如,我在警告声明中有i变量,但我没有'知道如何获取值,以便在最终触发回调时保存。
似乎会有一些"功能(数据,i)和#34;的组合。实现这一目标。
bindList = array('t1','t2','t3');
for (var i = 0; i < bindList.length; i++) {
myevents.bind(bindList[i], function(data) {
alert('data arrive on item ' + i + ': ' + data);
});
}
我将不胜感激任何帮助。 感谢。
答案 0 :(得分:5)
使用闭包。由于JS变量是“函数作用域”,因此0 {0}在迭代中的任何一点都指向相同的i
。我们需要为每次迭代创建一个范围,以便绑定代码引用闭包i
而不是循环的i
。
i