javascript中如何将循环控制变量传递到循环中的事件中去?

发布于 2022-09-05 20:16:21 字数 744 浏览 20 评论 0

1,遇到一个需求,需要在循环中绑定事件,并需要在事件中用到循环控制变量,代码如下:
html代码:

<ol>
    <li class="item">li-node-01</li>
    <li class="item">li-node-02</li>
    <li class="item">li-node-03</li>
    <li class="item">li-node-04</li>
</ol>

js代码:

var list = $('.item').get();

var length = list.length,
    i;

for (i = 0; i < length; i++) {
    // 这里我给list[i]添加了一个属性,并将i值赋给它
    list[i].tmp = i;

    $(list[i]).on('click', function(e) {
        console.log(e.target.tmp);
    });
}

2,从上面的代码可以看到,我想在循环中的事件回调函数中使用循环变量的值,目前我想到的方法是,给绑定事件的对象添加一个额外的属性,并将循环控制变量的值赋给它。我想问下,除了这种方法外是否还有其它的方法。

注意:以上代码只是为了方便描述问题,实际应用中,在上面的li上添加事件是需要用事件委托机制的。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

你如我软肋 2022-09-12 20:16:21

可以给li元素增加一个data:
$(list[i]).data('index',i)
在绑定的click事件中获取那个值:
$(this).data('index')

变量名index和i的值是可以任意的,所以可以很灵活

苏大泽ㄣ 2022-09-12 20:16:21

用jquery的each工具,objs是你选到的dom对象的集合,i是循环变量,n是循环到的dom对象
function里面可以写你要绑定的事件

$.each(objs,function(i,n){
     .......
})
冰魂雪魄 2022-09-12 20:16:21

用jquery的index()方法,获取索引值不可以吗?

一江春梦 2022-09-12 20:16:21

看你最终需要什么,如果你是需要看当前点击了第几个li的话,不需要这样做。

通过 $(e.target).index() 获取即可。

        $(list[i]).on('click', function (e) {
            console.log($(e.target).index());
        });
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文