我有一个带有 div 和一个按钮的页面。我已经为它们添加了 onClick 事件。现在,当我单击 div 上的按钮时,也会执行 div 的 onClick。有什么办法可以避免这种情况吗?
谢谢你,
我有一个带有 div 和一个按钮的页面。我已经为它们添加了 onClick 事件。现在,当我单击 div 上的按钮时,也会执行 div 的 onClick。有什么办法可以避免这种情况吗?
谢谢你,
试试这个,将事件作为参数传递给你的 onclick 事件并调用
event.stopPropagation();
event.preventDefault();
您的 onclick 事件分配应该是:
$(button).click(function(event) {
// script here
event.stopPropagation();
event.preventDefault();
});
在您的点击处理程序中,您可能希望使用“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/
在链接元素的侦听器中,您可以放置e.stopPropagation()
,这应该可以修复它(如果您正在使用事件冒泡)。
如果您不使用 jQuery,请确保将useCapture
参数设置addEventListener()
为False
info - MDN;你想确保你知道你的事件在 DOM 中移动的方向(你希望它们冒泡)。
您需要防止按钮 onClick 事件冒泡到 Div。所以基本上在按钮的 onClick 函数结束时,一旦你完成了所有逻辑,你需要调用 event.stopPropagation()
如果以上都不起作用,请尝试:
$("button").click(function(e) {
e.stopImmediatePropagation();
});