【问题标题】:jQuery match elements with .each and delay their processing with setTimeout?jQuery 用 .each 匹配元素并用 setTimeout 延迟它们的处理?
【发布时间】:2011-07-09 21:38:30
【问题描述】:

尝试使用 .each() 匹配元素并以设定的间隔触发它们,但无法正确获取对匹配元素的引用。

这匹配正确,但它们都是同时触发的:

$("div[id^='data_field'] input:submit").each(function(index) { setTimeout(console.log($(this)),1000*index );  });

这会正确触发它们,但元素匹配出错:

$("div[id^='data_field'] input:submit").each(function(index) { setTimeout(function(){ console.log($(this)); },1000*index );   });

如何正确处理?是的,它需要与 .each...

【问题讨论】:

    标签: jquery settimeout each


    【解决方案1】:

    这是一个使用 jQuery’s .delay() 函数延迟的 .each 示例:

    $('#show-articles').click(function(event) {
      var delayInterval = 1;
      $('.articles').each(function(){
        $(this).delay(delayInterval * 50).fadeIn()
        delayInterval++;
      })
      event.preventDefault();
    })
    

    ...当然,您需要适应您的确切需求。

    【讨论】:

      【解决方案2】:

      “this”在作用域为 setTimeout 内的函数时变成了别的东西。如果您将信息存储在 setTimeout 之外的 $(this) 中,那么它可以工作。看看这个小提琴http://jsfiddle.net/VZwFB/1/

      【讨论】:

      • 嗯,对不起,我是新手,但我只在链接中看到我自己的代码..?
      • 谢谢!这解决了......问题的一部分:D 因为实际上我正在尝试 .submit 或 .click $this。但是使用 $(this).val() 事实证明我不能这样做,尝试了 submitVal.submit(); 。点击(); .onclick();但他们都给出错误 Uncaught TypeError: Object XXX has no method submit?
      • 尝试var submit = $(this); 然后submit.trigger("click");
      • 非常感谢克里斯,终于彻底解决了我的问题!我已经被这件事难住了好几天了。如果有人有其他方法可以做到这一点,请告诉我,我对解决这个问题的不同方法很感兴趣。
      • 没问题的朋友。如果你觉得我的回复是这样,我不介意你把我的回复标记为答案。
      【解决方案3】:

      您是否尝试过使用Jquery Delay

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-03-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多