有没有办法找出jquery事件是否已被另一个事件监听器捕获?
以下示例:我有以下事件绑定:
$("body").on("click", ".linkarea", function (e) {
document.location.href = $(this).find("a")a.attr("href");
});
$("body").on("click", ".delete", function (e) {
console.log("DELETE");
});
这就是我的HTML的样子:
<div class="linkarea">
<h1><a href="/test.html">LINKED</a></h1>
<p>Blabla</p>
<a class="btn delete">DELETE</a>
</div>
我想要实现的是,如果用户点击div的任何部分(除了.delete按钮),他应该被重定向到/test.html。如果他点击.delete按钮,只有(!)应该执行其他事件代码。
我知道,我可以添加&#34; e.stopPropagation()&#34;删除事件,但也许我在另一个地方使用.delete类,并且它可能是必要的,它会起泡。我正在寻找的是这样的:
$("body").on("click", ".linkarea", function (e) {
if(!e.wasAlreadyExecuted)
document.location.href = $(this).find("a")a.attr("href");
});
答案 0 :(得分:0)
您可以尝试检查event current target:
$("body").on("click", ".linkarea", function (event) {
if(event.currentTarget.className.match(/delete/)){
//your stuff
}else{
//your other stuff
}
});
请注意,它不能在IE8上工作 -