0

私のタイトルが正しいかどうかはわかりませんが、私がやろうとしているのは、fadeToggle(); を停止することです。

一度クリックすると、フェードインし、2 番目にフェードアウトをクリックするとオーバーレイが表示されますが、非常識なマニアックな速さでボタンをクリックすると、フェードインとフェードアウトが非常に遅くてバグがあります...

私がやりたいのは、これがバグに見えるのを防ぐことです。基本を学んでいるので、まだ方法がわかりません...誰か教えてください。

サンプルは次のとおりです。

$('#overlay-trigger, div#overlay').on('click', function() {
    $('div#overlay').fadeToggle();
});

JS フィドル サンプル

目立つように、#overlay-trigger という名前のボタンがあります。そのボタンをクリックすると、オーバーレイの fadeIn();

その後、オーバーレイをクリックすると、その自己が非表示になります...

高速でクリックし続けると、何が問題なのかがわかります...動かなくなったり、遅くなったり、ラグがあったり、正しい言い回しがわかりません...

よろしくお願いします。

4

4 に答える 4

2

:animatedselectorを使用できます。

$('#overlay-trigger, div#overlay').on('click', function() {
    var $overlay = $('div#overlay');
    if( !$overlay.is(':animated')){
        $overlay.fadeToggle();
    }
});

フィドルをチェック

于 2012-11-15T22:33:48.577 に答える
2

jQuery の.stop()メソッドをアニメーションで使用し、必要な引数 ex を渡す必要があります。など.stop(true)_.stop(true,true)

$('#overlay-trigger, div#overlay').on('click', function() {
    $('div#overlay').stop().fadeToggle();
});​

http://jsfiddle.net/nPShy/

于 2012-11-15T22:31:54.123 に答える
2

次のように停止を使用します。

$('div#overlay').stop().fadeToggle();

詳細: http://api.jquery.com/stop/

于 2012-11-15T22:31:42.777 に答える
1

.one() を使用すると、問題解決する場合があります。jQuery API ドキュメントから:

要素のイベントにハンドラーをアタッチします。ハンドラは要素ごとに最大 1 回実行されます。

このone()関数は、最初の呼び出し後にクリック イベントのバインドを解除することで機能します。コードから可能な限り変更するには、次のように使用します。

$('#overlay-trigger, div#overlay').one('click', function() {
    $('div#overlay').fadeToggle();
});

お役に立てば幸いです。乾杯

于 2012-11-15T22:31:23.680 に答える