我知道live()事件处理的事件冒泡与所有其他jQuery事件不同。 jQuery建议使用'return false',但在我的情况下不起作用。
问题是:
我有一个包含锚标签的DIV。
使用live()绑定DIV。每当我点击这个DIV中的锚标签时,它就会起泡并调用DIV的事件。如果我将事件绑定到返回false的A标记,则会阻止链接打开。在这种情况下,stopPropagation()或返回false都不起作用。还有其他选择吗?理想情况下,我想保持live()事件。
答案 0 :(得分:5)
element.preventDefault();
stopPropagation将停止冒泡,而preventDefault将确保受影响元素的默认操作不会触发。
答案 1 :(得分:2)
这应该可以工作,因为你的锚点href是一个网址,不知道如果它是一个javascript方法调用会发生什么 - 猜测不会很好。
$("#the-div").live('click', function (e) {
var tag = e.target.tagName;
if (tag === "A") {
window.location.href = e.target.href;
return false;
}
// else do the div click handling
});
似乎可能有更优雅的方式来做到这一点,但我不知道。