我想点击一下body,除了menutop里面的东西body.
<body>
<div id="menutop">lorem ipsum...</div>
...
</body>
Run Code Online (Sandbox Code Playgroud)
JS
$("body").not($("#menutop")).click(function(){
console.log("323");
});
Run Code Online (Sandbox Code Playgroud)
也试过了
var n = $("#menutop");
$("body:not(n)").click(function(){
console.log("323");
});
Run Code Online (Sandbox Code Playgroud)
但menutop在两种情况下点击控制台显示323
Jos*_*ier 18
如果元素不是元素,则选择器$("body").not($("#menutop"))将选择元素.由于元素显然不是元素,因此仍然选择元素并将click事件附加到该元素.body#menutopbody#menutopbody
即使您单击该#menutop元素,click事件仍会冒泡并触发body元素上的click事件,因此一个选项是检查是否event.target是#menutop元素:
$(document).on('click', function (event) {
if (!$(event.target).closest('#menutop').length) {
// ... clicked on the 'body', but not inside of #menutop
}
});
Run Code Online (Sandbox Code Playgroud)
或者,您也可以在单击元素时抑制事件冒泡并停止事件传播#menutop:
$(document).on('click', function (event) {
// ... clicked on the 'body', but not inside of #menutop
});
$('#menutop').on('click', function (event) {
event.stopPropagation();
});
Run Code Online (Sandbox Code Playgroud)
小智 5
您可以event.stopPropagation()在menutop元素上使用,以防止点击进入下面的身体.
请参阅此codepen以获取解决方案
JS
$("body").click(function(){
alert("323");
});
$("#menutop").click(function(event) {
event.stopPropagation();
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12228 次 |
| 最近记录: |