12

我有

  • 带有点击事件的表格行
  • 带有单击事件的按钮,该按钮位于表格行上

我有问题。当我点击按钮时,行点击事件也会执行,但我不想要这种行为。我只想要按钮单击执行,而不需要行单击。

4

5 回答 5

11

使用 jQuery(由于问题标签):

$('#yourButton').click(function(e) {
    // stop event from bubbling up to row element
    e.stopPropagation();

    // now do your stuff
});
于 2009-11-13T13:41:35.307 回答
8

看看你的代码这是你应该在按钮点击事件 stopPropagation

于 2009-11-13T12:17:50.663 回答
3

你可以调用一个额外的函数 onClick

这是功能:

function cancelBubble(e){

    e.cancelBubble = true;
    if(e.stopPropagation)
     e.stopPropagation();
}

而按钮的 onClick 你可以这样写

onclick="yourfunctionname();cancelBubble(event)"

yourfunctionname:: 是您已经调用的函数的名称。

于 2009-11-13T16:15:09.060 回答
1

此外,我在可点击元素上覆盖了一个下拉列表。因此,只需使用以下内容来防止传播到所有现代浏览器的底层元素

onclick="yourfunctiontohandle();event.stopPropagation();"

对于较旧的跨浏览器解决方案,必须使用 IE event.cancelBubble

onclick="if(event.stopPropagation) event.stopPropagation(); else event.cancelBubble=true;"
于 2013-11-11T14:29:05.457 回答
0

由于不推荐使用全局事件,如果有人想使用纯 javascript,这是停止传播的方法

document.querySelector("#outer").addEventListener('click', e => {console.log('Outer div clicked')});
document.querySelector("#inner").addEventListener('click', e => {console.log('Inner div clicked'); e.stopPropagation()});
<div id="outer" style="width: 100px; height: 100px; background-color: red; display: flex; justify-content: center; align-items: center;">
    <div id="inner" style="background-color: black; width: 50px; height: 50px;"></div>
</div>

点击红色和黑色方块查看结果

于 2021-01-02T18:18:51.493 回答