有时用户将事件绑定在
$('body')
上,有时则绑定在 $(document)
上
$(document).on('click', someAction);
$('body').on('click', someAction);
有什么理由更喜欢其中一种吗?
对我来说,将事件绑定在
$(document)
上而不是 $('body')
上主要有一个原因:
无需等待domReady(文档在一切之前就可用 其他)
最有可能的简短答案是,不,不是。
某人这样做的原因应该始终是他需要在他的标记中捕获全局事件。由于
<body>
标签应该作为 <html>
的直接兄弟,所有事件冒泡阶段都将在那里结束。
<html>
<body>
<div>
</div>
<div>
上的每个点击事件都会冒泡到 <body>
以及 <html>
(如果不手动停止)。因此对于该用例来说,它应该没有任何区别。
速度上有一些差异,其他方面没有太大差异。有人已经完成了这项工作,所以我只会向您指出链接。
但是,与您的代码直接相关的是,有一个主要区别。
$(document).on('click', someAction);
将影响文档查看区域上的任何位置,而 $('body').on('click', someAction);
可能不会影响尽可能多的区域,因为主体可以具有独立的高度和宽度。
html
和body
可以小于浏览器视口(默认适合内容),然后您可以单击document
之外的body
。