如何选择除div“hola”和childrens
之外的所有元素 <body>
<div id="hola">
<div>example</div>
<span>example</span>
</div>
<div>not selected</div>
<span>not selected</span>
</body>
$(document).ready(function() {
$(":not(#hola > *)").click(function(){
console.log("sdf");
});
});
答案 0 :(得分:2)
我非常确定您不想选择所有其他项目,因为那会包含body
。
试试这个:
$(function() {
$("body > *:not(#hola)").click(function(){
console.log("sdf");
});
});
它会选择body
的所有直系子女,但身份为hola
答案 1 :(得分:1)
看起来你实际上不想选择所有项目,而是处理任何项目的点击,而不是#hola
div中的点击(元素本身及其子项)。
唉,你选择的方式 - 为#hola
及其子项之外的所有元素分配单独的点击处理程序,注定会失败,因为点击事件bubble。
我建议采用稍微不同的方法:只使用放置在document
上的单个事件处理程序(因为您需要监听所有元素的点击),并在此处理程序中检查事件的真实目标。例如:
$(document).click(function(e) {
var $target = $(e.target);
if ($target.is('#hola') || $target.closest('#hola').length) {
return false;
}
console.log('sdf');
});