性能方面的区别是什么?
几乎可以肯定没有,或者更准确地说,没有可测量的。$('body')
理论上必须在 DOM 中搜索body
元素,但这会非常快。此外,由于body
is 的子级document
,它将在事件发生前几纳秒的冒泡中到达document
。
但是,有几个不同之处:
如果您$('body')
在脚本中使用head
并且没有延迟它的执行(ready
等),则$('body')
不会找到任何东西并且不会连接任何处理程序。$(document)
,另一方面,会。
如果文档的正文没有填满视口,那么至少在某些浏览器上,您会点击document
但不会点击body
:
$(document).on("click", function() {
$("<p>document</p>").appendTo(document.body);
});
$('body').on("click", function() {
$("<p>body</p>").appendTo(document.body);
});
body {
border-bottom: 1px solid #060;
}
<p>The line marks the bottom of <code>body</code>. Click above and below the line to see where the click was caught. (Note the line will move as we append to <code>body</code>.)</p>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
当然,这不适用于您的$('body').on('click', '.myElement', function);
,因为如果点击在外部body
,它不会通过.myElement
...
对于全局处理程序,我使用$(document)
, never $('body')
(或$(document.body)
),但这可能更多是出于习惯而非原因。