jQuery,只触发事件,如果没有其他事件被触发

时间:2015-07-15 08:08:58

标签: javascript jquery

有没有办法找出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");
});

1 个答案:

答案 0 :(得分:0)

您可以尝试检查event current target

$("body").on("click", ".linkarea", function (event) {
   if(event.currentTarget.className.match(/delete/)){
         //your stuff
   }else{
          //your other stuff
   }
});

请注意,它不能在IE8上工作 -