单击除特定 div 之外的正文

2023-12-21

我想做点什么,点击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(使用前将#替换为@)

单击除特定 div 之外的正文 的相关文章