jQuery延迟匹配集中每个元素的单击函数

时间:2012-12-31 17:30:59

标签: jquery click timeout delay

以下代码应该对匹配集中的每个元素执行单击函数,将点击延迟200毫秒,然后才对每个元素生效。

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

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

3 个答案:

答案 0 :(得分:3)

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

试试这个:

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

答案 1 :(得分:1)

删除窗口并将时间函数重置为jQuery函数:

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

QED

答案 2 :(得分:0)

$(“。panel”)在此代码中必须做什么?它是关于具有“面板”类的元素数量吗?

只计算$(“。panels”)的数量:

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

你真的每200ms都想要点击所有a.last - 元素吗?不只是相应.panel中的那个?所以内在的功能是:

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