javascript - 在 for 循环中创建 .on() 元素时,如何使 .on(function) 调用当前索引?

标签 javascript jquery html for-loop

我希望标题有意义。

我正在使用for循环创建一个或多个$(document).on()元素。每个里面$(document).on()元素已创建,我需要它来调用函数 foo(currentIndex)其中currentIndex.on() 时索引的值定义。

fiddle :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')); 
});

DEMO

关于javascript - 在 for 循环中创建 .on() 元素时,如何使 .on(function) 调用当前索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30898440/

相关文章:

javascript - 基于多个分隔符计算项目?

javascript - 对象[对象对象]没有方法 'select2'

javascript - 如果父类有子类,则使用 CSS 或 Jquery 隐藏母亲 div secondchild 类

javascript - 我如何使这个轮播实现更好?

使用 Swift 突出显示 Javascript 搜索文本

javascript - 变化的输出标准值?

html - 当我向右对齐 2 个链接时,水平滚动条变得可见

javascript - Javascript 中如何确保函数返回 true?

javascript - 我在哪里可以找到 JSHint 数字错误代码的列表?

jquery - 文档就绪时的 CSS3 触发鼠标悬停状态