假设你有这样的代码:
<html>
<head>
</head>
<body>
<div id="parentDiv" onclick="alert('parentDiv');">
<div id="childDiv" onclick="alert('childDiv');">
</div>
</div>
</body>
</html>
点击parentDiv
时,我不想触发childDiv
点击事件,我该怎么做?
更新
此外,这两个事件的执行顺序是什么?
答案 0 :(得分:69)
<强> Live Demo 强>
$('#childDiv').click(function(event){
event.stopPropagation();
alert(event.target.id);
});
描述:防止事件冒泡DOM树, 防止任何父处理程序被通知事件。
答案 1 :(得分:19)
没有jQuery: DEMO
<div id="parentDiv" onclick="alert('parentDiv');">
<div id="childDiv" onclick="alert('childDiv');event.cancelBubble=true;">
AAA
</div>
</div>
答案 2 :(得分:6)
stopPropagation()
方法停止将事件冒泡到父元素,从而阻止任何父处理程序收到事件通知。
您可以使用方法event.isPropagationStopped()
来了解是否曾调用此方法(在该事件对象上)。
<强>语法:强>
以下是使用此方法的简单语法:
event.stopPropagation()
示例:强>
$("div").click(function(event) {
alert("This is : " + $(this).prop('id'));
// Comment the following to see the difference
event.stopPropagation();
});
答案 3 :(得分:3)