16

有时用户将事件绑定到$('body')有时在$(document)

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

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

有什么理由比另一个更喜欢一个吗?

4

3 回答 3

8

$(document)对我来说,将事件绑定到而不是绑定事件主要有一个原因$('body')

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

于 2012-12-04T08:34:41.187 回答
6

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

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

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

每个点击事件<div>都会冒泡<body><html>如果没有手动停止)。所以对于那个用例,它不应该有任何区别。

于 2012-12-03T16:16:07.193 回答
2

速度有一些差异,其他没什么。有人已经完成了这项工作,所以我将指向您的链接。

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

但是,与那里的代码直接相关,有一个主要区别。$(document).on('click', someAction);将影响文档查看区域的任何位置,而$('body').on('click', someAction);可能不会影响与 body 可以具有独立高度和宽度的区域一样多的区域。

于 2012-12-03T16:18:07.093 回答