2013-10-15 7 views
6

私は、既にクリックイベントを持っているli内のdiv thatsにclickイベントを追加しようとしています。私はdivクリックイベントが発生したときにliクリックイベントを発生させたくありません。JQuery内のdivをクリック

ここに私がしようとしているものがあります。 http://jsfiddle.net/2srUd/5/

.insideをクリックすると、#outsideの発射が欲しくなりません。私は( "内部")私は広告にないセレクタ$に必要と想定

<script> 
    $(document).ready(function() { 

     $("#outside").click(function() { 
      alert("outside click"); 
     }); 

     $(".inside").click(function() { 
      alert("inside click"); 
     }); 

    }); 
</script> 
<ul> 
    <li id="outside" style="border:2px solid red; padding:20px;"> 
     <div class="inside" style="border:2px solid blue; ">Click This Div. I want to accept the inside click but not the outside click.</div> 
    </li> 
</ul> 

答えて

14

簡単な修正:

$(".inside").click(function(e) { 
     e.stopPropagation(); 
     alert("inside click"); 
    }); 

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

は、DOMをバブリングからのイベントを防ぎますイベントを通知されないようにすることができます。 親ハンドラにイベントが通知されないようにします。

基本的に、親のイベントハンドラを起動しないようにして、伝播を停止します。

+2

はフィドルです。 http://jsfiddle.net/cjmnn/説明を追加してください。 – PSL

+0

ありがとう、それは私が必要としたものです。 – user2880764

+0

これは私にとってはうまくいかず、外部のdivだけがイベントを生成します。唯一の違いは、私の外側のdivは何かを変更する場合、idではないクラス名です。

a
b
' – djack109

2

ちょうど行います。ここではhttp://jsfiddle.net/2srUd/24/

$(document).ready(function() { 
     $("#outside").click(function() { 
      alert("outside click"); 
     }); 

     $(".inside").click(function() { 
      alert("inside click"); 
      return false; 
     }); 

    }); 
関連する問題