单击除链接之外的div的Fire事件

Ana*_*nas 6 jquery

我想在点击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但是在那种情况下不起作用

Bru*_*uno 7

为了获得所需的结果,您必须在anchor元素上注册一个事件处理程序,在执行时会阻止事件传播.

$("#myLink").click(function(e) {
    e.stopPropagation();
});
Run Code Online (Sandbox Code Playgroud)

为什么这个工作?

事件传播从根元素开始直到目标元素(捕获阶段)并且在到达目标之后,它们爬回到根元素(冒泡阶段).目标元素是接收事件的元素.

在冒泡阶段,可以在捕获阶段注册事件监听器.在这里,我们使用jQuery在冒泡阶段注册事件.

stopPropagation 允许阻止通过DOM传播事件.

这是我写的一篇文章,以防您需要有关W3C事件模型的更多信息.

  • @Anas我用了小提琴... http://jsfiddle.net/bruscopelliti/SjDdN/10/它甚至可以使用on()方法...查看它 (2认同)