在正文或文档上绑定事件?

问题描述 投票:0回答:4

有时用户将事件绑定在

$('body')
上,有时则绑定在
$(document)

$(document).on('click', someAction);

$('body').on('click', someAction);

有什么理由更喜欢其中一种吗?

javascript jquery jquery-events
4个回答
8
投票

对我来说,将事件绑定在

$(document)
上而不是
$('body')
上主要有一个原因:

无需等待domReady(文档在一切之前就可用 其他)


6
投票

最有可能的简短答案是,不,不是。

某人这样做的原因应该始终是他需要在他的标记中捕获全局事件。由于

<body>
标签应该作为
<html>
的直接兄弟,所有事件冒泡阶段都将在那里结束。

<html>
    <body>
         <div>
         </div>

<div>
上的每个点击事件都会冒泡到
<body>
以及
<html>
(如果不手动停止)。因此对于该用例来说,它应该没有任何区别。


2
投票

速度上有一些差异,其他方面没有太大差异。有人已经完成了这项工作,所以我只会向您指出链接。

http://jsperf.com/jquery-body-vs-document-body-selector

但是,与您的代码直接相关的是,有一个主要区别。

$(document).on('click', someAction);
将影响文档查看区域上的任何位置,而
$('body').on('click', someAction);
可能不会影响尽可能多的区域,因为主体可以具有独立的高度和宽度。


0
投票

html
body
可以小于浏览器视口(默认适合内容),然后您可以单击
document
之外的
body

© www.soinside.com 2019 - 2024. All rights reserved.