2013-10-15 107 views
6

我想在已經有點擊事件的li裏面的div上添加點擊事件。我不希望點擊div單擊事件觸發li點擊事件。JQuery點擊裏面div

這裏是我試圖做的jsfiddle。 http://jsfiddle.net/2srUd/5/

當我點擊。內側我不希望#外側點擊觸發。我想我需要的廣告,以不選擇$( 「內幕」)

<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; 
     }); 

    });