-1

我正在尝试遍历 DOM 中的每个 DIV 并应用效果(比方说fadeOut()),每个 DIV 之间都有时间空间。由于某种原因,这件事不想工作。

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() 语句。

好吧,我不想使用 each(),它正在吃掉内存!

有什么解决办法吗?

4

2 回答 2

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);

在这里你可以看到它。

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

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

于 2013-02-17T09:01:14.887 回答
-1

I think you might be using delay wrong. Try something like this:

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

I've made a JSFiddle as an example. http://jsfiddle.net/M9n8a/1/

于 2013-02-17T08:57:36.393 回答