2013-10-15 106 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; 
     }); 

    });