我想在点击div时触发一个事件,但如果我点击该div上的特定链接,我不希望触发该事件:
我的JS
$("#myDiv").not("#myLink").click(function () {
alert("clicked");
});
//Or
$("#myDiv:not(#myLink)".click(function () {
alert("clicked");
});
$("body").on('click', '#myLink', function(e) {
e.stopPropagation();
});
Run Code Online (Sandbox Code Playgroud)
我的HTML
<div id="myDiv">
<a href="#" id="myLink">Some link</a>
</div>
Run Code Online (Sandbox Code Playgroud)
这是jsfiddle
编辑:其实我的真实代码是" 开 "方法,我已经尝试过stopPropagation但是在那种情况下不起作用
为了获得所需的结果,您必须在anchor元素上注册一个事件处理程序,在执行时会阻止事件传播.
$("#myLink").click(function(e) {
e.stopPropagation();
});
Run Code Online (Sandbox Code Playgroud)
为什么这个工作?
事件传播从根元素开始直到目标元素(捕获阶段)并且在到达目标之后,它们爬回到根元素(冒泡阶段).目标元素是接收事件的元素.
在冒泡阶段,可以在捕获阶段注册事件监听器.在这里,我们使用jQuery在冒泡阶段注册事件.
stopPropagation 允许阻止通过DOM传播事件.
这是我写的一篇文章,以防您需要有关W3C事件模型的更多信息.
| 归档时间: |
|
| 查看次数: |
1638 次 |
| 最近记录: |