【问题标题】:jQuery Delay a click function for each element in matched setjQuery为匹配集中的每个元素延迟一个点击功能
【发布时间】:2012-12-15 18:42:50
【问题描述】:
下面的代码应该对匹配集中的每个元素执行点击功能,延迟点击200ms,然后对每个元素生效。
$('.panel').each(function(){
window.setTimeout($('a.last').click(),pdel);
pdel += 200;
});
这一切同时发生,超时功能不起作用。
【问题讨论】:
标签:
jquery
click
timeout
delay
【解决方案1】:
我假设pdel 是在每个之外声明的。但是你会希望你的setTimeout 使用一个函数,否则你会将.click() 方法的结果传递给setTimeout。
试试这个:
var pdel = 0;
$('.panel').each(function(){
setTimeout(function(){
$('a.last').click();
}, pdel);
pdel += 200;
});
【解决方案2】:
删除窗口并将时间函数重置为 jQuery 函数:
var pdel = 0;
$('.panel').each(function(){
setTimeout(function(){ $('a.last').click(); },pdel);
pdel += 200;
});
QED
【解决方案3】:
$(".panel") 在这段代码中有什么作用?是关于“面板”类的元素数量吗?
只计算 $(".panels") 的数量:
var c = $(".panels").length;
var pdel = 200;
for(var i = 0; i < c; i++) {
window.setTimeout(function() { /* your function */ }, pdel*c)
}
您真的每 200 毫秒都希望点击所有 a.last 元素吗?不只是对应.panel中的那个?所以内部函数是:
function() { $(".panels").eq(c).find("a.last").click() }