-1

私は 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() は .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

遅延を間違って使用している可能性があります。次のようなものを試してください。

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

例としてJSFiddleを作成しました。http://jsfiddle.net/M9n8a/1/

于 2013-02-17T08:57:36.393 に答える