6

重複の可能性:
.delay() および .setTimeout()

ここでJavaScriptの遅延を中断して停止する方法はありますか?

ボタンをクリックすると、この遅延が停止し、ここのような期待されるコードを実行しないユーザーが必要です

  $(#my_id).html('write my string here').delay(12000).fadeOut(1000) ;

ユーザーが id のボタンをクリックしたときに文字列をフェードアウトしないようにするにはどうすればよい'my_button'ですか? どんな助けでも大歓迎です

4

2 に答える 2

5

jQuery.delayのドキュメントに明確に記載されているように、その関数を使用して構成された遅延をキャンセルすることはできません。

[...] 制限があるため (たとえば、遅延をキャンセルする方法を提供していない)、.delay() は JavaScript のネイティブな setTimeout 関数の代わりにはなりません。 ...]

通常の javascript setTimeoutを使用して、簡単にキャンセル可能なアクションを実現します。たとえば、コードは次のように変換できます。

$("#my_id").html('write my string here');
var myTimeoutId = setTimeout(function() {
    $("#my_id").fadeOut(1000);
}, 12000);

// to somewhere else cancel that timeout use clearTimeout function like so:
clearTimeout(myTimeoutId);
于 2012-12-12T14:33:50.303 に答える
1

ドキュメントをチェックアウトすると、明らかにそうではありません。setTimeout必要なものの代わりになる可能性があることが示唆されています。

.delay() メソッドは、キューに入れられた jQuery エフェクト間の遅延に最適です。制限があるため (たとえば、遅延をキャンセルする方法は提供されません)、.delay() は JavaScript のネイティブな setTimeout 関数に代わるものではなく、特定のユース ケースにより適している場合があります。

于 2012-12-12T14:34:25.923 に答える