2012-12-31 73 views
1

下面的代码应该在匹配集中的每个元素上执行click功能,延迟点击200毫秒,然后才能对每个元素生效。jQuery延迟匹配集中每个元素的点击函数

$('.panel').each(function(){ 
     window.setTimeout($('a.last').click(),pdel); 
     pdel += 200; 
    }); 

这一切都发生在同一时间,超时功能不起作用。

回答

3

我假设pdel被宣布为每个外。但是你会希望你的setTimeout使用一个函数,否则你会将.click()方法的结果传递给setTimeout

试试这个:

var pdel = 0; 
$('.panel').each(function(){ 
    setTimeout(function(){ 
     $('a.last').click(); 
    }, pdel); 
    pdel += 200; 
}); 
1

删除窗口和复位时间函数作为一个jQuery函数:

var pdel = 0; 
    $('.panel').each(function(){ 
     setTimeout(function(){ $('a.last').click(); },pdel); 
     pdel += 200; 
    }); 

QED

0

什么是$( “小组”)在此代码吗?是关于类“面板”的元素的数量?

只是计数的$金额( “板”):

var c = $(".panels").length; 
var pdel = 200; 
for(var i = 0; i < c; i++) { 
    window.setTimeout(function() { /* your function */ }, pdel*c) 
} 

而且你真的每200ms要被点击的所有a.last -elements。不只是相应的.panel中的那个?所以内部功能是:

function() { $(".panels").eq(c).find("a.last").click() }