jQuery - 延迟DOM中的每个div

时间:2013-02-17 08:41:52

标签: jquery delay fadeout

我正在努力 循环遍历DOM中的每个DIV并应用一个效果(比如fadeOut()),每个之间有一个时间空间。 从某种原因,这件事不想工作。

var stupid = -1000;

return_stupid = function(){
return stupid+=1000;
}

$(function(){
    $("div").not("#wrapper").delay(return_stupid()).queue(function(){
        $(this).fadeOut("slow");
        $(this).dequeue();
    });
});

编辑: 好吧,我发现了这个问题。 return_stupid()仅被称为ONCE,因为它不是.each()语句。

好吧,我不想使用每个(),它正在吃掉记忆!

任何解决方案?

2 个答案:

答案 0 :(得分:0)

您可以使用如下的jQuery插件。它将在给定的间隔之间淡出每个匹配的元素。

$.fn.fadetraining = function(duration, delay) {
  var $elements = this;
  $elements.length && $elements.first().fadeOut(duration, function(){
    $elements.slice(1).delay(delay).fadetraining(duration);
  });
  return $elements;
};

你可以像这样使用它:

$("div").not("#wrapper").fadetraining("slow", 1000);

You can see it here.

我不明白为什么你不想使用.each()。毕竟,几乎所有的jQuery函数都在内部使用它。

注意:这是我之前编写的jQuery插件$.fn.fadetrain的衍生产品。

答案 1 :(得分:-1)

我认为你可能会使用延迟错误。尝试这样的事情:

$(".cell").animate({width:"100px",height:"100px"}, 3000).delay(1000).fadeOut();

我以JSFiddle为例。 http://jsfiddle.net/M9n8a/1/