jquery选择器上的not()方法不起作用

Con*_*ick 5 jquery events jquery-selectors

我试图在点击文档时触发点击事件,除非点击我拥有某个类名的div.

我尝试过以下但事件不会发生.

$(document).not(".class").click(function(){
      //code
});

$(document).not("div.class").click(function(){
      //code
});

$("body").not(".class").click(function(){
      //code
});
Run Code Online (Sandbox Code Playgroud)

谁知道我做错了什么?

谢谢

*更新

我尝试了以下内容

$(document).on("click", ":not(.class)", function(){

$('*:not(.class)',document).click(function(){

$(document).find(':not(.class)').click(function(){

$("body:not(.thisclass)").doAction();
Run Code Online (Sandbox Code Playgroud)

但它并没有对我试图排除的.class的div赋予任何区别.任何单击文档时都会触发该事件.

这是我的HTML的div

<div class="pictureBox" id="pictureBox2">  <!--content--></div>
Run Code Online (Sandbox Code Playgroud)

Jon*_*Jon 8

您将点击处理程序附加到document自身,因此它将始终触发(除非其他一些处理程序阻止它).

你应该做的是使用委托的形式.on:

$(document).on("click", ":not(.class)", function(){
      //code
});
Run Code Online (Sandbox Code Playgroud)

这仍然会附加事件处理程序document,但此处理程序仅响应其源与:not(.class)选择器匹配的点击:当事件冒泡documentjQuery时,仅当源与选择器匹配时才调用处理程序.