性能方面的区别是什么?
几乎可以肯定没有,或者更准确地说,没有可测量的。$('body')理论上必须在 DOM 中搜索body元素,但这会非常快。此外,由于bodyis 的子级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)),但这可能更多是出于习惯而非原因。