jquery停止孩子触发父事件

我有一个div,我附加了一个onclick事件。 在这个div中有一个链接标签。 当我点击链接时,div上的onclick事件也会被触发。 我怎么能禁用这个,如果链接被点击的div onclick没有被解雇?

脚本:

$(document).ready(function(){
    $(".header").bind("click", function(){
         $(this).children(".children").toggle();
    });
})

html代码:

<div class="header">
    <a href="link.html">some link</a>
    <ul class="children">
        <li>some list</li>
    </ul>
</div>

做这个:

$(document).ready(function(){
    $(".header").click(function(){
        $(this).children(".children").toggle();
    });
   $(".header a").click(function(e) {
        e.stopPropagation();
   });
});

如果你想阅读更多.stopPropagation(),看看这里。


或者,您可以使用传递给您的单击事件处理程序的Event Object参数来确定是否单击了某个孩子,而不是使用额外的事件处理程序来阻止另一个处理程序。 target将是被点击的元素, currentTarget将是.header div:

$(".header").click(function(e){
     //Do nothing if .header was not directly clicked
     if(e.target !== e.currentTarget) return;

     $(this).children(".children").toggle();
});

通过使用on()和链接更好的方式,

$(document).ready(function(){
    $(".header").on('click',function(){
        $(this).children(".children").toggle();
    }).on('click','a',function(e) {
        e.stopPropagation();
   });
});
链接地址: http://www.djcxy.com/p/14617.html

上一篇: jquery stop child triggering parent event

下一篇: Find out if radio button is checked with JQuery?