2

私は次のコードを持っています

<div class="test-123">
   <p>Some Text</p>
   <div class="delete"></div>
   <div class="edit"></div>
</div>

問題は、3つの要素(test-123、delete、edit)に対してonclickjqueryハンドラーが必要なことです。私は次の問題に直面しています。削除をクリックすると、削除のonclickハンドラーが終了した後、test-123のonclickハンドラーも実行されます。

どういうわけかそれを防ぐ方法はありますか?

4

3 に答える 3

5

あなたは探しているstopPropogation

event.stopPropagation()

http://api.jquery.com/event.stopPropagation/

$(function(){   
    $(".test-123").click(function(){
       alert("click on div"); 
    });      
    $(".delete,.edit").click(function(e){
       e.stopPropagation() 
       alert("click on Links"); 
    });    
});​

行をコメントアウトして、e.stopPropagation何が起こるかを確認します。

作業デモ: http: //jsfiddle.net/Pjn3s/2/

于 2012-04-24T23:07:40.287 に答える
4

jQueryのを参照してくださいevent.stopPropagation。これにより、追加のリスナーが起動するのを防ぐことができます。例えば、

$("p").click(function(event){
  event.stopPropagation();
  // do something
});
于 2012-04-24T23:07:01.060 に答える
0

@paisleeが言うように、伝播の問題です。次のようなjQueryメソッド「ライブ」を使用していますか?

$('selector').live('click', function(){
//The actions
});

クロージャーを適用する必要のある要素の最上位の親を設定するように「強制」するメソッド「delegate」の使用を確認する必要があると思います。どんな方法よりも安全です(クリックイベントでも)。

于 2012-04-24T23:09:49.257 に答える