2

2つのdiv要素があります。1つは子で、もう1つは次のような親です。

<div id="p">
  <div id="c">
  </div>
</div> 

parentdivには2つのイベントが添付clickされdblclick、子divには1つのイベントが添付されていclickます。今私の問題はchild div、親のdivクリックイベントをクリックしたときにも実行されることです。私は試しe.stopPropagation();ましたが、それでも同じ動作です。助けて ?

4

2 に答える 2

5

stopPropagationここでトリックを行う必要があるため、間違って試したに違いありません。子要素でイベントの伝播を停止するようにしてください。

$("#c").click(function (e) {
    e.stopPropagation(); //Will prevent event bubbling to #p
});

これが実際のです。


上記の唯一の例外は、イベントハンドラーをメソッドにバインドした場合です(廃止されたliveため、これを行うべきではありません)。イベントハンドラーは要素ではなくドキュメントにバインドされているため、イベントliveの伝播を停止することはできません。イベントは、実行される前にドキュメントまで伝播する必要があります。live

于 2012-06-22T09:12:09.253 に答える
0

使用stopPropagationする以外に、イベントを処理する前に条件を確認することもできます(イベント委任アプローチ)。このようにして、イベントハンドラーを使用することもできます(私が正しければ、最近はjQueryでlive置き換えられています)。このフィドルonを見る

[編集]:を使用するbindと、に対して定義された、すべてに対して1つのハンドラーのみが必要になりますdiv#p。提供されたjsfiddleはそれに応じて調整されます。

于 2012-06-22T09:26:34.480 に答える