[英]jQuery - div inside div, how to run only 1 click event when inside has been clicked
我在div内有一个div。 如果内部div已被单击(closeme div),则我不想运行其他div(容器div)的click事件。 我怎样才能做到这一点 ?
html
<div id="container">
content
<div id="closeme"></div>
</div>
js
$(document).on('click', '[id="container"]' ,function(){
alert("I am clicked");
}
$(document).on('click', '[id="closeme"]' ,function(){
alert("I am clicked");
}
$(document).on('click', '[id="container"]', function(e) { e.stopPropagation(); alert("I am container"); }) $(document).on('click', '[id="closeme"]', function(e) { e.stopPropagation(); alert("I am closeme"); })
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div id="container"> content <div id="closeme">qwe</div> </div>
说明:防止事件使DOM树冒泡,从而防止任何父处理程序收到该事件的通知。
如果是否测试目标是否为#closeme
$(document).on('click', '[id="closeme"]', function(event) {
if ($(event.target).is('[id="closeme"]')) {
alert("coloseme clicked");
}
});
就像其他人刚刚提到的那样。 您必须停止事件传播。 这是一个完整的工作示例。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
</head>
<body>
<div id="container">
content
<div id="closeme">Inner Div</div>
</div>
</body>
<script>
$(document).on('click', '[id="container"]', function(event) {
alert("container clicked");
});
$(document).on('click', '[id="closeme"]', function(event) {
event.stopPropagation();
alert("coloseme clicked");
});
</script>
</html>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.