jQueryのdelay()要素の遅延を延長する

私は、1500msの遅延の後にフェードアウトするように設定された要素を持っています。つまり、次のようなものです:

$("<div>My Element</div>").appendTo("body").delay(1500).fadeOut(400);

要素のフェードアウトがまだ保留中の間、この遅延期間を延長する方法はありますか?

1

3 答え

setTimeout() {
    function() {
        $("<div>My Element</div>").appendTo("body").fadeOut(400);
    }, 1500
}
1
追加された

From http://api.jquery.com/delay/

.delay()メソッドは、キューに入れられたjQuery   効果。           制限されているため、たとえば、遅延をキャンセルする方法はありません。       delay()は、JavaScriptのネイティブなsetTimeout関数を置き換えるものではなく、           特定のユースケースに適している可能性があります。

だから私はあなたがjavascript settimeout()でしかできないのではないかと心配しています。

私が間違っているなら、私を訂正してください。 :)

p.s.これを追加するには、 .clearQueue()を使用して遅延アニメーションをキャンセルすることができます。

1
追加された

.delay() probably uses setTimeot() or setInterval(). I'm not sure what effect you are trying to get, but if you want to reset the timer (or restart it), you can do something like this: http://jsfiddle.net/rkw79/4AevQ/

var t;
$('div').click(function() {
    clearTimeout(t);
    t= setTimeout("$('div').fadeOut(400);", 1500);
});

$('div').trigger('click');

上のコードは、ユーザーがそれをクリックしない限り、 'div'を消してしまいます。

0
追加された