2012-09-30 69 views
0

我有一个网页上的所有身体click事件挂钩:jQuery的防止默认值,但也保持自定义事件

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

当然,有可能从任何地方手动触发每个事件,防止默认被调用,但有没有一种通用的方式来做到这一点?

谢谢!

+0

这个自定义事件应该何时被触发? –

+0

就我所知,您的代码应该可以正常工作;这里有一个重复,正如你在上面:http://jsfiddle.net/pXAhA/4/请修改您的问题与更多的信息,以协助潜在的答案。 – dSquared

回答

0

不知道你的hasEventListener方法的实现是什么,我认为这是防止自定义事件结合,

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

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

0

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

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

显然,这是问题。谢谢!