我尝试为以下任务提供通用解决方案:onclick
元素的事件侦听器
<a href="#">Some text</a>
必须返回false。单击后可以停止页面滚动。
$("a[href='#']").bind("click", function () { return false; });
它可以停止滚动,但return false
也可以停止鼓泡!因此,如果我有以下代码:
HTML
<div class="clickable">
<a href="#">Text</a>
</div>
Javascript(JQuery)
$("a[href='#']").bind("click", function () { return false; });
$(".clickable").bind("click", function(){alert("It works!");})
并且如果我单击“文本”,则不会发出警报。
我可以恢复冒泡吗?或者,也许还有其他常见的方法可以从每个此类“ a”标签的onclick
事件侦听器返回false?还是唯一的方法是在“ a”上添加侦听器function(){alert("It works!");}
?
更改您的click函数的签名以接受事件args并使用preventDefault
:
$("a[href='#']").bind("click", function (e) { e.preventDefault(); });
$(".clickable").bind("click", function(){alert("It works!");})
这里是working fiddle。
<a href="#" onclick="return false;">Some text</a>
您的受jQuery约束的单击功能应继续工作。
示例:
为了阻止冒泡,我始终遵循以下步骤:
$('myAnchor').live("click", function(e) {
e.preventDefault();
e.stopPropagation();
//or if you want to stop all handlers
e.stopImmediatePropagation();
//code here
//for IE etc.
return false;
});