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