[英]stopPropagation not working with nested href tag
我有多个 div,如下所示:
<div class="msg-list clearfix" id="27705">
<div class="thumbnail_image">
<a href="some_path">AnchorText</a>
</div>
<div class="msg-date">DATA</div>
</div>
我试图捕捉父 div 的点击事件,但是当点击 href 元素时,我的点击事件也被触发,而不是仅仅跟随点击的链接。
这是我的 jquery 调用:
//$(".msg-list a").click(function(e) {
$(".msg-list").click(function(e) {
e.stopPropagation();
alert("Handler for .click() called.");
});
知道我错过了什么吗?
尝试:
$(".msg-list").on('click', function(e) {
alert("div handler");
return false;
});
$(".msg-list a").on('click', function(e) {
alert("a handler");
e.stopPropagation();
});
这是你想要的吗? http://jsfiddle.net/L5kC4/2
与任何其他事件一样,单击事件使用冒泡 ( http://en.wikipedia.org/wiki/DOM_events ) 分派给元素,因此单击的任何内部元素都将触发所有父元素(另一种方式称为隧道)。
您必须将 stopPropagation 放在锚元素 onclick 事件上或放入元素:
onclick="return false;"
要启用 div 内的链接,请使用此 JavaScript。 您必须在包含的元素(链接)上禁用传播!
$(".msg-list a").click(function(e) {
e.stopPropagation();
});
$(".msg-list").on('click', function(e) {
alert("Handler for .click() called.");
});
老问题。 但是,我遇到了同样的问题。
添加e.preventDefault()
解决了这个问题。 默认是跟随链接。 所以,防止它跟随。
此外,将其添加到其子项的<a>
也没有问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.