我有一个带div的页面和一个按钮。我已将onClick事件添加到它们中。现在,当我单击div上的按钮时,div的onClick也正在执行。有什么办法可以避免这种情况吗?
谢谢,
答案 0 :(得分:2)
尝试此操作,将事件作为参数传递给onclick事件并调用
event.stopPropagation();
event.preventDefault();
您的onclick事件分配应该是:
$(button).click(function(event) {
// script here
event.stopPropagation();
event.preventDefault();
});
答案 1 :(得分: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/ What's the effect of adding 'return false' to a click event listener? http://fuelyourcoding.com/jquery-events-stop-misusing-return-false/
答案 2 :(得分:0)
在link元素的监听器中,你可以放e.stopPropagation()
,它应该修复它(如果你正在使用事件冒泡)。
如果您不使用jQuery,请务必将useCapture
addEventListener()
参数设置为False
info - MDN;你想确定你知道你的事件在DOM中移动的方向(你希望它们冒泡)。
答案 3 :(得分:0)
您需要阻止按钮onClick事件冒泡到Div。因此,基本上在按钮的onClick函数结束时,一旦完成了所有逻辑操作,就需要调用event.stopPropagation()
答案 4 :(得分:0)
如果以上都不奏效,请试试:
$("button").click(function(e) {
e.stopImmediatePropagation();
});