1

我列出了多个 div,如下所示:

<div class="msg-list clearfix" id="27705">
  <div class="thumbnail_image">
    <a href="some_path">AnchorText</a>
  </div>
  <div class="msg-date">DATA</div>
</div>

我试图捕捉父 div 的点击事件,但是当点击 href 元素时,我的点击事件也会被触发,而不是仅仅跟随点击的链接。

这是我的jQuery调用:

//$(".msg-list a").click(function(e) {
$(".msg-list").click(function(e) {

    e.stopPropagation(); 
    alert("Handler for .click() called.");
});

知道我错过了什么吗?

4

4 回答 4

1

尝试:

$(".msg-list").on('click', function(e) {
    alert("div handler");
    return false;
});
$(".msg-list a").on('click', function(e) {
    alert("a handler");
    e.stopPropagation();
});

这是你想要的吗?http://jsfiddle.net/L5kC4/2

于 2013-07-14T20:29:58.790 回答
0

与任何其他事件一样,click 事件使用 Bubbling ( http://en.wikipedia.org/wiki/DOM_events ) 分派给元素,因此单击的任何内部元素都将触发所有父元素(另一种方式称为隧道)。

您必须将 stopPropagation 放在锚元素 onclick 事件上或放入元素中:

onclick="return false;"
于 2013-07-14T20:35:47.420 回答
0

要启用 div 内的链接,请使用此 JavaScript。您必须在包含的元素(链接)上禁用传播!

$(".msg-list a").click(function(e) {
    e.stopPropagation();
});
$(".msg-list").on('click', function(e) {
    alert("Handler for .click() called.");
});
于 2013-07-14T20:41:20.440 回答
0

老问题。但是,我有同样的问题。

添加e.preventDefault()解决了问题。默认是跟随链接。所以,防止它跟随。

<a>此外,将其添加到其子代中也没有问题。

于 2019-11-02T17:02:07.797 回答