我想停止将此div的onclick事件传播到文档?当用户点击“div”时,两个警报都会出现:1)div的警报和2)文档的警报。我想压制文档警报。
我知道如何使用addEventListener来实现它,但还有另一种方法吗?下面的问题是我不知道如何得到事件 - 我尝试了“event = element.onclick”,如下所示,但这不起作用。我如何参加活动?
<head>
<script>
function showMenu(element) {
alert("div clicked");
event = element.onclick; // HOW TO GET HOLD OF THE EVENT?
// Don't propogate the event to the document
if (event.stopPropagation) {
event.stopPropagation(); // W3C model
} else {
event.cancelBubble = true; // IE model
}
}
document.onclick = function() {
alert('document clicked');
};
</script>
</head>
<body>
<div id="foodmenu" onclick="showMenu(this);">Click inside this div</div>
or click outside the div.
</body>
答案 0 :(得分:29)
更改您的功能定义以包含事件:
function showMenu(event, element) {
alert("div clicked");
// Don't propogate the event to the document
if (event.stopPropagation) {
event.stopPropagation(); // W3C model
} else {
event.cancelBubble = true; // IE model
}
}
然后更改要在事件中传递的调用:
div id="fooddmenu" onclick="showMenu(event, this);">Click inside this div</div>
答案 1 :(得分:2)
尝试事件监听器:
HTML:
<div id="fooddmenu">Click inside this div</div>or click outside the div.
是:
function showMenu(e) {
alert("div clicked");
}
document.onclick = function() {
alert('document clicked');
};
window.onload = function(){
document.getElementById("fooddmenu").addEventListener("click", function(e){
showMenu(this);
e.stopPropagation();
});
};
答案 2 :(得分:0)
将onclick添加到body元素。
答案 3 :(得分:0)
$("div").click(function(){
...
...
...
return false; //this will stop the further propagation of the event
});
答案 4 :(得分:0)
道格拉斯 它确实可以阻止事件冒泡。
在这里,如果您对alert语句发表评论,它会在点击较小的框时显示2个警告,否则只显示一个。
希望这有帮助。
答案 5 :(得分:0)
嗯,这是一个jquery代码。 $(“#id”)与document.getElementById(“id”)
相同.click函数与addEvent(“click”,function(){...})相同;
所以基本上这两个函数都有Parent和Child DIV的点击处理程序。
通过注释/取消注释“return false”来观察输出言。
希望有所帮助。
顺便说一句,抱歉这个“$”混乱。
答案 6 :(得分:0)
将 Pointer-events: none 添加到特定元素。