我已经做了一些搜索文档,并在网上花了一段时间,但无法找到解决方案!我希望警报告诉我单击.thumb时每个()的迭代次数。
EG:有六个.thumb我点击了3号,浏览器弹出3个!
实际发生的是无论点击哪个.thumb,都会弹出。
var counter = 1;
$('.thumb').each(function () {
$(this).click(function () {
alert (counter);
});
counter++;
});
感谢任何帮助。
答案 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
});
});
答案 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。更干净。