jQuery点击除div之外的所有东西,它是孩子们

Tim*_*sen 10 javascript jquery

当我点击任何地方时,我想做点什么,除非我点击一个div而它是孩子们.这是我到目前为止所尝试的,但它不起作用(点击它的孩子仍然执行括号内的内容.

$('body').on('click', '* :not(#calculator)',  function(e){
Run Code Online (Sandbox Code Playgroud)

我不能使用这样的东西:

jQuery - 选择除单个元素及其子元素之外的所有内容?

$("body > *").not("body > #elementtokeep").remove();
Run Code Online (Sandbox Code Playgroud)

因为.not函数不是我可以放在.on()函数内部的东西.

我怎样才能做到这一点?

epa*_*llo 11

不要使用逗号来同时拥有两个选择器:元素本身和元素子元素

jQuery(document.body).on("click", ":not(#calculator, #calculator *)", function(e){ 
    console.log(this); 
    e.stopPropagation(); 
});???????
Run Code Online (Sandbox Code Playgroud)

的jsfiddle


Khô*_*hôi 6

您可以在函数内部检查相关元素:

$('body').click( function(e){
    if (!$(e.target).is("#calculator") || $("#calculator").has(e.target).length ) {
        // do your stuff
    }
});
Run Code Online (Sandbox Code Playgroud)