パフォーマンスの違いは何ですか?
ほぼ確実にゼロ、より正確には、測定可能なものは何もありません。$('body')理論的には要素を DOM で検索する必要がありますがbody、これは非常に高速です。また、bodyは の子である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)) を使用しますが、これは理由というより習慣によるものかもしれません。