jQuery防止默认,但也保留自定义事件

时间:2012-09-30 21:13:26

标签: jquery events preventdefault

我有一个网页,其中包含所有正文点击事件的挂钩:

if (0 == $('body').hasEventListener("click.custom").length) {
    $('body').bind("click.custom", function(e) {
        console.log(e.target);
    });
}

我希望此方法输出所有点击的元素,但我遇到了有其他事件处理程序的问题。请考虑以下代码:

<a href="www.stackoverflow.com" class="my-link">Click</a>
<script>
    $(document).on("click", ".my-link", function(e) {
        alert("not allowed to click this");
        e.preventDefault();
    });
</script>

最终发生的事情是preventDefault调用阻止我的自定义事件运行 我想要将用户重定向到要阻止的链接的默认事件,但我希望触发任何自定义事件。

当然,可以从任何地方手动触发每个事件,防止调用默认值,但有没有通用的方法呢?

谢谢!

2 个答案:

答案 0 :(得分:0)

不确定你的hasEventListener方法实现是什么,我认为这会阻止自定义事件绑定,

但如果你取消支票,它就可以了。

http://jsbin.com/udonew/3/edit

答案 1 :(得分:0)

肯定是我的错误 - 我定义了一个自定义的preventDefault,它包含:

e.stopPropagation();
e.stopImmediatePropagation();

显然这就是问题所在。谢谢!