【问题标题】: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() }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-02-07
          • 1970-01-01
          • 2012-07-24
          • 2018-11-25
          • 2011-05-02
          • 1970-01-01
          相关资源
          最近更新 更多