2011-01-21 21 views
3

jQueryとhoverIntentプラグインを何度も使用しています。ドロップダウンメニューと高度なナビゲーションが少し優雅になっています。しかし、私は問題に遭遇しました。hoverIntentタイマーをキャンセルする

私はまた、ホバーを持つクリック可能なli要素を持つメニューを持っています。 インテントタイマーがトリガーする前に誰かがそれをクリックすると、ホバーンをキャンセルしたいと思っています。

デザイナーはまず、コーダーはどのように2番目の方法を把握することはできません。これは、感度などとslideUpとslideDownという2つの関数を定義する変数configDownを持って

$('#navigationContainer ul li').hoverIntent(configDown); 

:これは意図を呼ぶものです。すべてが完璧に動作します。

誰かがこの同じ要素をクリックした場合、hoverIntentを取り消したいと思います。どんな助けもありがとう。

答えて

2

よりもむしろ、hoverIntentをキャンセルliがクリックされた場合、最初のチェックにhoverIntentコールバック内のコードを変更します。

var configDown = { 
    slideUp: function() { 
     if ($(this).hasClass('no-intent')) return; 
     // slide up 
    }, 
    slideDown: function() { 
     if ($(this).hasClass('no-intent')) return; 
     // slide down 
    } 
}; 

$('#navigationContainer ul li').click(function() { 
    $(this).addClass('no-intent'); 
}).hoverIntent(configDown); 

あなたががhoverIntentの良い遅延がない限り、それが引き金にトリッキーなことがありこれは正しく(hoverIntentがトリガーされた直後にクリックすることになるかもしれませんが)、基本的なアイデアがあります。

+1

ありがとうございます!それはうまくいくようです。 1つはすばやくクリックする必要がありますが、「速い」ユーザー用の新しいページが読み込まれる前に視覚効果を避けるために追加するだけです。 – plebksig

関連する問題