在 for 循环中创建 .on() 元素时,如何使 .on(函数) 调用当前索引
When creating .on() elements in a for loop, how can I make the .on(function) call the current index?
我希望这个标题有意义。
我正在使用for
循环来创建一个或多个$(document).on()
元素。在每个创建的$(document).on()
元素中,我需要它来调用一个函数foo(currentIndex)
其中currentIndex
是.on()
定义时的索引值。
小提琴:https://jsfiddle.net/xLbses7w/
JavaScript/jQuery:
var event = ['click', 'click'];
var element = ['#someId', '#someId2'];
for (i = 0; i < event.length; i++)
{
$(document).on(event[i], element[i], function ()
{
foo(i); // would like this to be the value of i when the function was created
});
}
function foo(arg)
{
alert(arg);
}
.HTML:
<div id="someId">div1</div> <br/>
<div id="someId2">div2</div>
问题:当我使用我创建的.on()
函数单击元素时,它使用最新的i
值(在本例中为 2)。
期望的行为:当我点击div1时,它应该提醒0
,当我点击div2时,它应该提醒1
(.on()
定义时的当前索引。
> 您可以使用.data()
来存储索引值
$(element[i]).data('index', i);
$(document).on(event[i], element[i], function () {
foo($(this).data('index'));
});
演示
您可以创建闭包:
for (i = 0; i < event.length; i++) {
(function (i) {
$(document).on(event[i], element[i], function () {
foo(i); // would like this to be the value of i when the function was created
});
})(i);
}
-演示-
相关文章:
- 使用 jQuery 的 .on 函数如何获取事件的原始元素
- 使用 .on 函数运行 jQuery 声明函数
- jQuery:使用on函数加载插件
- 为什么在传递/公开事件发射器时需要包装我的事件发射器的 on 函数
- 在 jQuery on 函数中同时对多个项目运行时保持一致的值
- 用on函数替换live
- 如何将jQuery this与.on函数和.each函数一起使用
- 如何在这种情况下使用.on()函数
- Angular $on函数使用这个关键字
- jquery中的“.on”函数中出现错误
- jquery中的On()函数不起作用
- 如何将所有live()函数替换为on()函数
- 从on()函数返回变量- jquery
- jsPlumb的规范.On()函数
- 在 jQuery 中使用 BIND 或 ON 函数的最佳实践
- 将事件传递给_.使用jQuery 'on'函数
- socket IO匿名.on()函数不能使用jquery
- 你能在.on()函数中放入if / else语句吗?
- 如何通过jquery中的.on函数在多个选择器上附加不同的事件
- 在Node Js中,tcp连接中socket的.on函数是什么?