Jquery 将单击事件绑定到文档比将其绑定到正文好吗?

Jquery 将单击事件绑定到文档比将其绑定到正文好吗?,jquery,Jquery,问题只在于两者之间 $(“body”)。单击(函数(e){})vs$(文档)。单击(函数(e){}) 哪个更有效或更可取?还是视情况而定 老实说,在我感到好奇并在这里提出这个问题之前,我一直在交替使用它们,也没有发现任何差异。将其绑定到文档似乎是标准做法,所以我会坚持这样做 文档也是。我认为最好将事件绑定到文档,因为在某些情况下,在某些浏览器中,主体可能会丢失。我会将其与DOM中的任何其他内容类似 如果我绑定到一个,那么它的级别高于它内部的。如果我绑定到,那么它比低。在我看来,文档(较高)和(较

问题只在于两者之间

$(“body”)。单击(函数(e){})vs
$(文档)。单击(函数(e){})

哪个更有效或更可取?还是视情况而定


老实说,在我感到好奇并在这里提出这个问题之前,我一直在交替使用它们,也没有发现任何差异。

将其绑定到
文档
似乎是标准做法,所以我会坚持这样做


文档
也是。

我认为最好将事件绑定到文档,因为在某些情况下,在某些浏览器中,主体可能会丢失。

我会将其与DOM中的任何其他内容类似

如果我绑定到一个
,那么它的级别高于它内部的
。如果我绑定到
,那么它比
低。在我看来,文档(较高)和
(较低)只是一个级别问题,其工作方式相同


因此,如果要确保将click事件绑定到最高的元素,那么就绑定到文档

车身可能无法覆盖整个可见窗口(一些疯狂的款式会导致这种情况)!我不知道在这种情况下,你是否仍然会得到点击事件。因此,最好将其绑定到
文档

如果页面高度小于视口高度,则单击页面下方的视口不会触发
“正文”
单击处理程序,而只触发
文档
单击处理程序

现场演示:

在演示中,尝试单击文本下方的区域,您将看到只有
文档
单击处理程序执行


因此,最好将处理程序绑定到文档对象。

Hi,请参见此
http://jsfiddle.net/ZVgDC/11/
,它只在chrome浏览器上运行,我在firefox 15.0.1上试用过,IE浏览器不支持。。请给我一个解决方案。>>我的要求是,在文档中添加一个侦听器,当用户单击除该div之外的任何对象时,我想隐藏一个div。。所以,如果上面的东西在所有浏览器中都能正常工作,我的问题就会得到解决。请在@Šime中查看Vidas@alex这是使用
on()
事件委派比较文档和文档正文的准确方法吗?因为如果我使用
body
document.body
@alex相比,我认为document.body会更快,因为它离节点更近,但事实并非如此,你能解释一下吗?@timperson这是一个有效的假设,但Chrome似乎与此相反。可能是浏览器优化。也可能是显式检查
document
,而
document.body
必须进行不同的解析。@alex document也比mobile safari上的document.body快得多,这是一个令人不安的结果,因为它与我一直听到的on()方法和事件委托相矛盾。虽然可能会放置。单击();最后并不能准确地表示预期的目标,因为人们不再监听点击,而是强制点击。我更喜欢将事件处理程序绑定到文档,因为你可以在文档准备好之前完成,我喜欢尽可能多地提前完成。它在单页应用程序中也特别好,在单页应用程序中,主体可能会完全改变。