1

私は、ボタンを押すと、数十個の setTimeout といくつかのアニメーションを実行する JQuery プログラムを作成しました。プログラムは、既存の div で動作し、HTML を変更し (id セレクターを使用)、フェードイン、フェードアウトなどを行います...

プロセス全体に最大 15 秒かかる場合があります。問題は、その時間内にボタンをもう一度押すと、フェード インとフェード アウトが重なって奇妙に見えることです。

ボタンをもう一度押すと、進行中のすべての JQuery が停止してクリアされるように使用できるものはありますか? clearTimeout を使用してみましたが、うまくいかないようです。

4

1 に答える 1

2

.stop()またはのいずれかを使用できます.clearQueue()

.clearQueue() メソッドが呼び出されると、実行されていないキュー上のすべての関数がキューから削除されます。引数なしで使用すると、.clearQueue() は標準エフェクト キューである fx から残りの関数を削除します。このように、.stop(true) に似ています。ただし、.stop() メソッドはアニメーションでのみ使用することを意図しいますが、.clearQueue() は、.queue() メソッドで一般的な jQuery キューに追加された関数を削除するためにも使用できます。

また、タイマーが終了するまでボタンがアクションを実行しないようにすることもできます。false最初のクリック後に値を取得し、タイマーが終了したら、この変数を元に戻してtrue、ボタンをクリックするたびにチェックするブール変数を配置できます。

于 2012-09-01T23:12:08.670 に答える