2016-04-14 3 views
0

をイベント火災をクリックすると、発射できないようにHTMLのクリックイベント、私は2つのクリックのバインディングを持っていますどのクリックに応じて問題は、LIをクリックするとHTMLもクリックされるため、LIをクリックすると、LIクリックイベントとHTMLクリックイベントの両方が発生するということです。jQueryのバインド()LIが私のjsで

LI以外の場所をクリックすると、HTMLのクリックだけが必要になります。

基本的に「」と言ってもらえますか?ユーザーがLI要素をクリックした場合は、これを実行します。それ以外の場合は、LI以外の場所をクリックした場合は "となりますか?

答えて

1

イベントバブリングを防止するだけで済みます。 jQueryを使用すると、liイベントハンドラ内にe.stopPropagation()を追加するだけで簡単です。

だからあなたの更新されたコードは次のようになります。

$('#menu > li').bind('click', function (e) { 
    e.stopPropagation(); 
    ... 
}); 

参考資料:見事に働いた

https://api.jquery.com/event.stoppropagation/

http://www.quirksmode.org/js/events_order.html

+0

!ありがとうございました!少し時間がある場合、関数イベント引数 "e"を提供するものを説明できますか? –

+1

@ KirbyL.Wallace jQueryは自動的にイベントオブジェクトでバインド関数を呼び出します。イベントオブジェクトは、発生したイベントに関する特定の情報を保持します。たとえば、onkeypressイベントでは、イベントオブジェクト(あなたの場合eという名前の)が実際のキーを押したままになります。jQueryはこのための素晴らしいアクセサーを持っています(クロスブラウザアクセスを正規化するため)。希望が役立ちます。詳細はこちらをご覧ください:http://www.quirksmode.org/js/events_properties.html –

関連する問題