Jquery each()计数器

时间:2010-10-14 01:46:48

标签: jquery

我已经做了一些搜索文档,并在网上花了一段时间,但无法找到解决方案!我希望警报告诉我单击.thumb时每个()的迭代次数。

EG:有六个.thumb我点击了3号,浏览器弹出3个!

实际发生的是无论点击哪个.thumb,都会弹出。

var counter = 1;
$('.thumb').each(function () {
    $(this).click(function () {
        alert (counter);
    });
    counter++;
});

感谢任何帮助。

2 个答案:

答案 0 :(得分:64)

这是因为您为所有 counter处理程序共享了相同的click变量,而它最终是在循环结束时结束的。相反,使用传入循环的那个(已经存在的.each()的索引参数),如下所示:

$('.thumb').each(function (i) {
    $(this).click(function () {
        alert (i+1); //index starts with 0, so add 1 if you want 1 first
    });
});

You can test it here

答案 1 :(得分:0)

要使用@Paulo建议的解决方案,您需要这样做:

var list = $('.thumb');

for(var i=0; i<list.length; i++) {
    (function( i_local ) {
        list.eq( i ).click(function(){
            alert(i_local);
        });
    })( i + 1 );
}​

......虽然我use @Nicks .each() solution instead。更干净。