在身体或文件上绑定事件?

时间:2012-12-03 16:13:17

标签: javascript jquery javascript-events

有时用户会绑定$('body')上的事件,有时会绑定$(document)

上的事件
$(document).on('click', someAction);

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

是否有某种理由喜欢彼此?

3 个答案:

答案 0 :(得分:7)

对我而言,主要有一个理由将事件绑定在$(document)而不是$('body')

  

无需等待 domReady (文档在所有内容之前都可用   别的)

答案 1 :(得分:6)

简短回答很可能是,不,不是真的。

某人这样做的原因应该始终是他需要在他的标记中全局捕捉事件。由于<body>标记应该作为<html>的直接兄弟,所有冒泡阶段的事件都将在那里结束。

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

<div>上的每次点击活动都会冒出<body>以及<html>(如果没有手动停止)。所以对于那个用例,它应该没有任何区别。

答案 2 :(得分:2)

速度有所不同,其他方面并不多。有人已经完成了这项工作,所以我只想指出你的链接。

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

然而,与您的代码直接相关,有一个主要区别。 $(document).on('click', someAction);会影响文档查看区域的任何位置,而$('body').on('click', someAction);可能不会影响区域,因为正文可以有独立的高度和宽度。