0

我有一个包含所有正文点击事件的网页:

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 调用阻止我的自定义事件运行。
我希望阻止将用户重定向到链接的默认事件,但我希望触发任何自定义事件。

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

谢谢!

4

2 回答 2

0

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

但是,如果您删除检查,它工作正常。

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

于 2012-09-30T21:42:35.670 回答
0

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

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

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

于 2012-10-01T15:32:01.300 回答