jquery stop child triggering parent event
I have a div which I have attached an onclick
event to. in this div there is a tag with a link. When I click the link the onclick
event from the div is also triggered. How can i disable this so that if the link is clicked on the div onclick
is not fired?
script:
$(document).ready(function(){
$(".header").bind("click", function(){
$(this).children(".children").toggle();
});
})
html code:
<div class="header">
<a href="link.html">some link</a>
<ul class="children">
<li>some list</li>
</ul>
</div>
Do this:
$(document).ready(function(){
$(".header").click(function(){
$(this).children(".children").toggle();
});
$(".header a").click(function(e) {
e.stopPropagation();
});
});
If you want to read more on .stopPropagation(), look here.
Or, rather than having an extra event handler to prevent another handler, you can use the Event Object argument passed to your click event handler to determine whether a child was clicked. target
will be the clicked element and currentTarget
will be the .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/14618.html
上一篇: 1.10.2.min.map触发404(Not Found)
下一篇: jquery停止孩子触发父事件