要阻止与事件相关的操作,请使用.stopImmediatePropagation()
and preventDefault()
.
工作演示
-
停止立即传播()- 调用该函数的同一函数内的处理程序将正常执行,但会立即忽略/停止与同一事件相关的其他函数内的任何操作。例如:
// alert will fire
$(document).on('click', '#foo', function(event) {
event.stopImmediatePropagation();
alert('Hello world');
});
// but this will be stopped
$(document).on('click', '#foo', function(event) {
console.log('I am stopped!');
});
<a href="http://www.google.com" id="foo">Google it!</a>
链接将被停止,但会发出警报
$(document).on('click', '#foo', function(event) {
event.preventDefault();
alert('I prefer MSN');
});
两者应该结合在一起,以阻止事件在 DOM 树中冒泡。
我制造了一个Demo解释两者之间的差异以及为什么两者应该结合在一起。
根据上述内容,您的代码应该如下所示。
$(document).on('click', '.selector', function (event) {
event.stopImmediatePropagation();
event.preventDefault();
});
我希望这有帮助。