jQuery与.each匹配元素并使用setTimeout延迟处理?

时间:2011-03-06 18:09:08

标签: jquery settimeout each

尝试匹配元素并使用.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 ...

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分: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 :(得分:0)

您是否尝试过使用Jquery Delay