<script>
$(function(){
$('.logger').bind('click',function(){
alert('we will log that the user shared something');
return true; //keep going, pretend nothing happened.
});
$('.share').bind('click',function(){
window.open('blah');
return false;
});
});
</script>
<a href="#" class="share logger">Share this</a>
我希望能够触发记录器和共享功能。但是现在,只触发了共享功能。如果我评论共享功能,则记录器功能正常。
我还尝试更改“类”,以便记录器在分享之前。
答案 0 :(得分:1)
当您在停止事件传播的事件处理程序中return false;
时,这就是未触发其他处理程序的原因。如果您只想停止默认操作,请使用event.preventDefault()
。
这个article很好地解释了这个概念:
首先,实际上返回false 做三件非常独立的事情 你叫它:
- event.preventDefault();
- 的 event.stopPropagation(); 强>
- 停止回调执行并返回 在被叫时立即
醇>“等一下 一分钟,“你哭! 我只需要 停止默认行为!我不 需要这两个项目 ......我想。
这三项行动中唯一的一项 需要取消默认行为 是 preventDefault()。除非你的意思 实际上停止事件传播 (冒泡),使用return false会 大大增加了脆性 你的代码