防止 click() 事件冒泡 dom

Prevent click() event from bubbling up the dom

提问人:BrokenCode 提问时间:4/3/2021 最后编辑:showdevBrokenCode 更新时间:4/3/2021 访问量:220

问:

我该如何重写它以防止事件冒泡 dom 并触发其他函数?click()

wallcarousel.on('select.flickity', function() {
  $('.filter-category.is-selected a').click();
});

我试着这样添加:e.stopPropagation();

wallcarousel.on('select.flickity', function() {
  $('.filter-category.is-selected a').click();
  e.stopPropagation(); //this did not work
});
JavaScript jQuery

评论

0赞 j08691 4/3/2021
您的示例中指的是什么?e.stopPropagation()e
0赞 BrokenCode 4/3/2021
我以为它指的是点击事件。但我现在非常困惑。
0赞 BrokenCode 4/3/2021
非常感谢,解决了它
1赞 charlietfl 4/3/2021
快速浏览一下开发工具控制台中抛出的错误会告诉你这是未定义的。始终检查错误。它们比“不起作用”提供更多信息e
0赞 showdev 4/3/2021
为了防止触发其他函数,您需要对事件进行操作。在您的示例中,您将停止“select.flickity”事件的传播,在这种情况下,您需要将事件传递给处理程序,例如(请参阅(e)是什么意思)。我对 感到困惑,因为它似乎将一个未定义的变量作为点击处理程序传递。click()stopPropagation()clickfunction(e).click(e)e

答:

3赞 Sergey Sklyar 4/3/2021 #1

这应该可以解决问题:

wallcarousel.on('select.flickity', function() {
  $('.filter-category.is-selected a').click(function(event) {
    event.stopPropagation();
  });
});

或 ES6 版本:

wallcarousel.on(
  'select.flickity',
  () => $('.filter-category.is-selected a')
    .click(event => event.stopPropagation());
);