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