在我用JQuery编写的脚本中,我试图向div添加一个单击处理程序,但忽略了对其中的子a
标记的单击。
您可以在这里看到一个JSFiddle,说明我目前如何尝试(失败)在这里实现它:http://jsfiddle.net/q15s25Lx/1/
$(document).ready(function() {
$(document).on('click', '.post:not(a)', function(e) {
alert($(this).text());
});
});
<div class="post">This is some <a href="#">text</a> in a div. Click me please.</div>
在我的真实页面中,a
标记都有自己的单击处理程序,因此我需要能够同时侦听这些处理程序。
因此,理想情况下,我希望使用类似于:not()的选择器来忽略对这个特定处理程序的单击。
这样的事有可能吗?
发布于 2015-01-29 07:29:05
您将需要添加另一个处理程序,该处理程序在锚点上工作,并阻止事件传播:
$(document).on('click', '.post a', function (e) {
e.stopPropagation();
e.preventDefault();
});
如果没有此操作,当您单击a
时,事件会弹出到父.post
,而处理程序无论如何也会触发它。
发布于 2015-01-29 07:29:02
您需要使用.stopPropagation()
停止事件传播到子元素。
$(document).on('click', '.post a', function(e) {
e.stopPropagation();
});
发布于 2015-01-29 07:31:17
尝试使用stopPropogation()阻止事件在DOM树上冒泡。
$(document).ready(function() {
$(document).on('click', '.post a', function(e) {
e.stopPropagation();
alert($(this).text());
});
});
https://stackoverflow.com/questions/28218313
复制