jQuery live()和stopPropagation()问题

时间:2010-04-21 17:09:33

标签: javascript jquery

我知道live()事件处理的事件冒泡与所有其他jQuery事件不同。 jQuery建议使用'return false',但在我的情况下不起作用。

问题是:

我有一个包含锚标签的DIV。

使用live()绑定DIV。每当我点击这个DIV中的锚标签时,它就会起泡并调用DIV的事件。如果我将事件绑定到返回false的A标记,则会阻止链接打开。在这种情况下,stopPropagation()或返回false都不起作用。还有其他选择吗?理想情况下,我想保持live()事件。

2 个答案:

答案 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
});

似乎可能有更优雅的方式来做到这一点,但我不知道。