私はjQueryの初心者で、いくつかのコード例を調べているときに見つけました:
$(document.body)
と$('body')
これら2つに違いはありますか?
私はjQueryの初心者で、いくつかのコード例を調べているときに見つけました:
$(document.body)
と$('body')
これら2つに違いはありますか?
これらは同じ要素を参照しますが、違いはdocument.body
、要素を直接 jQuery に渡すと言う場合です。または、string を渡す'body'
と、jQuery セレクター エンジンは文字列を解釈して、それが参照している要素を特定する必要があります。
実際には、どちらも仕事を成し遂げます。
興味のある方は、 jQuery 関数のドキュメントに詳しい情報があります。
ここでの答えは実際には完全に正しいわけではありません。閉じますが、エッジケースがあります。
違いは、$('body') は実際にはタグ名で要素を選択するのに対し、document.body はドキュメントの直接のオブジェクトを参照することです。
つまり、あなた (または不正なスクリプト) が document.body 要素を上書きした場合 (残念!) $('body') は機能しますが、$(document.body) は機能しません。したがって、定義上、それらは同等ではありません。
他のエッジ ケース (IE のグローバルに ID 化された要素など) があり、ドキュメント オブジェクトの上書きされた body 要素に相当するものをトリガーし、同じ状況が適用されると思います。
$(document.body)
はグローバル参照を使用してdocument
への参照を取得しますが、body
は$('body')
jQuery が の<body>
要素への参照を取得するセレクターdocument
です。
私が見ることができる大きな違いはなく、一方から他方への顕著なパフォーマンスの向上もありません。
まったく違いはないはずですが、最初のほうがパフォーマンスが少し高いかもしれませんが、それは些細なことだと思います (これについては本当に心配する必要はありません)。
<body>
両方で、タグを jQuery オブジェクトにラップします
出力に関しては、両方とも同等です。ただし、2番目の式はDOMルートからトップダウンルックアップを実行します。JQueryがラップオーバーするためのdocument.bodyオブジェクトがすでに手元にある場合は、追加のオーバーヘッドを回避することをお勧めします(ただし、それはごくわずかですが)。http://api.jquery.com/jQuery/#SelectorContextを参照してください