如何将 onclick 回调附加到 div,但不附加到 div 内的链接?

发布于 2024-11-25 19:36:33 字数 772 浏览 2 评论 0原文

Html

<div class='item_container'>

[...bunch of links and pictures...]
<a class='item_owner'>John Doe</a>

</div>

Javascript

/**
    Bind the onclick only if you hover on the item since we got a lot
    of items and several events and plugins to setup on them.
*/
$('.item_container').live('mouseenter', function(e){
  $this = $(this);
  if (!$this.data('isSetup')) {
    $this.click(function(e){
      // do magic
      return false;
    });
     [... a lot of other stuff]
    $this.data({'isSetup': true});
  }
});

当然,当我单击 div 中的任意位置时,它会执行“魔术”。感谢 return false,如果我点击 div 中的任何链接,它仍然会执行“魔术”并且不会更改页面,这是预期的行为。

但有一个链接实际上可以更改页面,即所有者链接。问题是,在我当前的设置下,我阻止它工作。

Html

<div class='item_container'>

[...bunch of links and pictures...]
<a class='item_owner'>John Doe</a>

</div>

Javascript

/**
    Bind the onclick only if you hover on the item since we got a lot
    of items and several events and plugins to setup on them.
*/
$('.item_container').live('mouseenter', function(e){
  $this = $(this);
  if (!$this.data('isSetup')) {
    $this.click(function(e){
      // do magic
      return false;
    });
     [... a lot of other stuff]
    $this.data({'isSetup': true});
  }
});

Of course when I click anywhere in the div, it performs 'do magic'. Thanks to return false, if I click on any link in the div, it still performs 'do magic' and doesn't change the page, which is the expected behavior.

But there is one link that is suppose to actually change the page, the owner link. Trouble is, with my current set up, I prevent it from working.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

何时共饮酒 2024-12-02 19:36:33

您需要停止从链接到父 .item_container 的事件传播。

将此块添加到代码中:

$('.item_container a.item_owner').live('click', function(e){
 e.stopPropagation();
});

You need to stop the propagation of the event from the links to the parent .item_container.

Add this block to the code:

$('.item_container a.item_owner').live('click', function(e){
 e.stopPropagation();
});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文