jquery:如果在div内部,请点击鼠标

我有这个HTML页面

  
a
b
c
d
e
f

a,b,c,d,e和f可以是div而不仅仅是纯文本。

我想获得鼠标点击事件,但我怎么知道它是在#in_or_out div的内部还是外部?

编辑::伙计们,我知道如何检查div是否点击,但我希望我的事件在点击超出该div时被触发

 $("body > div").click(function() { if ($(this).attr("id") == "in_or_out") { // inside } else { // not inside } }); 

编辑:刚学会,有否定:

 $("body > div:not(#in_or_out)").click(function(e) { // not inside }); 

如果要检测是否已在div内部或外部单击,请在documentElement上设置事件处理程序,并让它从其他元素向上传播:

 $("html").click(function (e) { if (e.target == document.getElementById("in_or_out")) alert("In"); else alert("Out!"); }); 

也许这个会帮助你

 $('body').click(function(){ //do smth }); $('div#in_or_out').click(function(e){ e.stopPropagation(); // do smth else }); 

取决于你想要的。 如果你只想执行代码,当它 #in_or_out ,你可以这样做:

 $('#in_or_out').click(function(){ /* your code here */ }); 

您可以拥有一个状态变量,指出鼠标是否在#in_or_out

 var inside = false; $('#in_or_out').hover(function() { inside = true; }, function() { inside = false; }); 

然后,每当发生单击时,您可以在inside检查点击是否在in_or_out内。

参考: .hover()

更新:

无论您绑定click处理程序的哪个元素,您始终可以执行以下操作:

 $('element').click(function() { if ($(this).attr('id') !== 'in_or_not') { } }); 

对于里面它会

 $("#in_or_out").click(function() { // do something here }); 

外面……我不知道。

编辑:您可以尝试对body-tag执行相同操作(将click-handler分配给文档本身)。 但是我不确定这两件事是否会引发。

像这样?

 $("#in_or_out").click(function() { alert("IN DIV!"); });