我想做点什么,点击body
,除了menutop
这是里面的body
.
<body>
<div id="menutop">lorem ipsum...</div>
...
</body>
js
$("body").not($("#menutop")).click(function(){
console.log("323");
});
也尝试过
var n = $("#menutop");
$("body:not(n)").click(function(){
console.log("323");
});
但点击menutop
在这两种情况下控制台都会显示323
选择器$("body").not($("#menutop"))
将选择body
元素,如果它不是#menutop
元素。自从body
元素显然不是#menutop
元素,即body
元素仍然处于选中状态,并且单击事件附加到它。
即使您点击#menutop
元素上,点击事件仍然会冒泡并触发body
元素,因此一种选择是检查是否event.target
is the #menutop
元素:
$(document).on('click', function (event) {
if (!$(event.target).closest('#menutop').length) {
// ... clicked on the 'body', but not inside of #menutop
}
});
或者,您也可以抑制事件冒泡并停止事件传播 https://api.jquery.com/event.stoppropagation/当点击#menutop
元素:
$(document).on('click', function (event) {
// ... clicked on the 'body', but not inside of #menutop
});
$('#menutop').on('click', function (event) {
event.stopPropagation();
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)