3

これは javascript/jQuery の一般的な使用例であると想像する必要があるため、サイトの別の場所にある場合はご容赦ください。検索したところ、この基本的な使用例が見つかりませんでした。

目に見える div (A) があります。その div にカーソルを合わせると、他の div (B & C) が表示されます。これらの div (A、B、または C) のいずれかをアンホバーすると、表示されている 2 つの div (B & C) が非表示になります。

簡単ですよね?問題は、イベントがすべてスタックし、しばらくの間アコーディオンのように動作するため、ホバーとホバー解除を何度もすばやく連続して行うと、単純な動作が見苦しくなることです。

タイプウォッチ関数を方程式に取り入れてみました:

var typewatch = (function(){
      var timer = 0;
      return function(callback, ms){
        clearTimeout (timer);
        timer = setTimeout(callback, ms);
      }  
    })();

しかし、私はそれを正しく使用できなかったと思います (おそらく、typewatch 自体を呼び出すカスタム トグル関数を 1 つ呼び出す必要があるのでしょうか?)。

理解を容易にするために、正確なケースの jsfiddle を次に示します: http://jsfiddle.net/tchalvakspam/KG3P9/7/

しかし、一般的に言えば、複数のイベントをキャッチして最新のイベントのみを尊重するにはどうすればよいでしょうか?

4

2 に答える 2

2

jQuery イベントで e.preventDefault() を使用して、イベントがツリーに伝播するのを防ぎます。

于 2011-06-24T18:50:34.807 に答える
1

これは実は私をとても悩ませていたものです。アニメーション化する前$.stop()に、トラック内の現在のアニメーションをフリーズする呼び出しを呼び出し、指定した新しい目標を取得します。

$("#container")
  .mouseenter(
    function(){
     $(".panels", this).stop(true, true).slideDown(); 
    })
  .mouseleave(
    function(){
     $(".panels", this).stop(true, true).slideUp();
    }
  );

$.stop()これは、単一の画像を使用して同様の例を示しているため、メソッド自体についてjQueryAPIで提供されているドキュメントに従います。

デモ: http: //jsbin.com/adeqef/2/edit

于 2011-06-24T19:12:20.947 に答える