, which returns false from onclick event listener的父事件冒泡

问题描述 投票:2回答:3

我尝试为以下任务提供通用解决方案: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!");}

jquery html jquery-events event-bubbling
3个回答
2
投票

更改您的click函数的签名以接受事件args并使用preventDefault

$("a[href='#']").bind("click", function (e) { e.preventDefault(); });
$(".clickable").bind("click", function(){alert("It works!");})

这里是working fiddle


1
投票
<a href="#" onclick="return false;">Some text</a>

您的受jQuery约束的单击功能应继续工作。

示例:

http://jsfiddle.net/mU2dq/1/


1
投票

为了阻止冒泡,我始终遵循以下步骤:

$('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;
});
© www.soinside.com 2019 - 2024. All rights reserved.