2009-10-05 93 views
2

我想在body标签上有一个点击事件,但我在body标签下有一个div,我不想点击事件。我已经tryed这个但这doesent似乎工作正确的:jquery和选择器

$("body").not("#InnerDiv").click(function() { 
    alert("Hejhej"); 
}); 

的HTML:

<body> 
    <div id="1">1</div> 
    <div id="2">2</div> 
    <div id="InnerDiv">InnerDiv</div> 
</body> 
+0

当你这样做时会发生什么?点击甚至仍然为InnerDiv激发,还是点击事件不会触发任何事情? – 2009-10-05 20:39:59

+0

我认为这可以使用标签“事件” – jes5199 2009-10-07 15:41:03

回答

5

Click事件冒泡。 InnerDiv上的默认点击处理程序委托给其父项的单击事件。 您可以重写该事件,并要求它不要冒泡。

$("body").click(function() { 
      alert("Hejhej"); 
     }); 
$("#InnerDiv").click(function(e) { 
      e.stopPropagation(); 
     }); 
+0

stopPropagation ...这正是我正在寻找的,我找不到它在文档 – Dave 2009-10-05 20:58:07

+0

是啊,jQuery的这些方法的文档很难找到。 – jes5199 2009-10-05 21:52:23

1

尝试


    $("body").click(function() { alert("Hejhej"); }); 
    $('#InnerDiv').click(function(e) { e.stopPropagation(); });