-1

我有一个带有 div 和一个按钮的页面。我已经为它们添加了 onClick 事件。现在,当我单击 div 上的按钮时,也会执行 div 的 onClick。有什么办法可以避免这种情况吗?

谢谢你,

4

5 回答 5

2

试试这个,将事件作为参数传递给你的 onclick 事件并调用

event.stopPropagation();
event.preventDefault();

您的 onclick 事件分配应该是:

$(button).click(function(event) {
    // script here
    event.stopPropagation();
    event.preventDefault();
});
于 2012-07-23T15:58:07.813 回答
1

在您的点击处理程序中,您可能希望使用“stopPropagation”,例如:

$("button").click(function(e) {
    // handle this event
    // ...

    // don't pass this event up to parent handlers
    e.stopPropagation();

} );

还有一个您可能想要阅读的相关功能,称为“preventDefault”,它告诉浏览器不要执行它通常自动执行的操作(例如,单击提交按钮时提交页面)

另请参阅: https ://developer.mozilla.org/en/DOM/event.stopPropagation http://api.jquery.com/event.stopPropagation/ 将“return false”添加到单击事件侦听器有什么效果? http://fuelyourcoding.com/jquery-events-stop-misusing-return-false/

于 2012-07-23T16:01:08.613 回答
0

在链接元素的侦听器中,您可以放置e.stopPropagation()​​ ,这应该可以修复它(如果您正在使用事件冒泡)。

如果您不使用 jQuery,请确保将useCapture参数设置addEventListener()False info - MDN;你想确保你知道你的事件在 DOM 中移动的方向(你希望它们冒泡)。

于 2012-07-23T15:57:27.467 回答
0

您需要防止按钮 onClick 事件冒泡到 Div。所以基本上在按钮的 onClick 函数结束时,一旦你完成了所有逻辑,你需要调用 event.stopPropagation()

于 2012-07-23T15:58:04.430 回答
0

如果以上都不起作用,请尝试:

$("button").click(function(e) {
    e.stopImmediatePropagation();
});
于 2016-01-11T13:02:55.590 回答