2011-01-24 15 views
10

は何か違いはありますか?

編集:また、場合に.ready()例えば$("document").ready()

答えて

19

$(document)は、グローバルdocumentオブジェクトをラップするためにjQueryを使用します。そのような要素がありませんので、明らかにHTMLに意味をなさない<document>要素、探すために

$("document")試み、<html>要素でマークアップで表現のみルートdocumentオブジェクト。 jQuery関数に文字列を渡すことで、実際にはselectorになります。

再編集:patrick dwが言うように、ready()の文脈では差がないと、実際にはまったく$(document)を使用するか、明示的に廃止されましたready()を呼び出すjQueryの3.0のように。 documentationから:

jQueryは、DOMの準備ができたときに実行される関数をいくつか添付する方法を提供します。次の構文のすべてが等価である:jQueryの3.0のよう

  • $(handler)
  • $(document).ready(handler)
  • $("document").ready(handler)
  • $("img").ready(handler)
  • $().ready(handler)

、唯一の最初の構文をお勧めします。他の構文も機能しますが、非推奨です。これは、選択が.ready()メソッドの動作に影響しないためです。これは非効率的であり、メソッドの動作に関する誤った前提につながる可能性があります。たとえば、3番目の構文は"document"で動作し、何も選択しません。 4番目の構文は、ドキュメントの準備が整うのを待ちますが、イメージが準備完了になるのを待つ(間違って)ことを意味します。

+2

*実際の質問には非常に良い答えがあります。 +1 – user113716

+0

それで$( "html")と$(document)の違いは何ですか? – Andrew

+0

@Andrew:htmlはドキュメントルート要素(document.documentElement)であり、ドキュメントオブジェクトではありません。 html要素自体を変更する場合(クラス名を追加または削除するなど)には、$(document)ではなく$( "html")を使用します。 – BoltClock

0

documentは、現在のHTMLドキュメントの表現である既定のグローバル変数で、window.documentの略です。

$("document")は、@BoltClockが指摘したように、<document>要素のセレクタとしてその文字列を使用します。

1

あなたの最初の例では、あなたのJS内の文書と呼ばれる変数やオブジェクトを検索ウィル。第二は、名前「ドキュメント」でタグのページを検索します

(それが事前に定義された変数であり、気をつけなります)。

var document = 'div#logo'; 
$(document); //will search for div#logo 
$('document'); //will search for document 
7

あなたが.ready()関数を呼び出して話をしている場合は、(現在は)違いはありません。

どちらの場合も、引数は無視されます。

あなたはこれを行うことができます:

$(document).ready(function(){/*...*/}); 

と::

$("cheese pizza").ready(function() {}); 

は明確にするために、それはある.ready()に正式にサポートされるコールを、使用するのが最適です

$(function(){/*...*/}); 

documentを選択する場合は、$(document)を使用してください。

+0

なぜ無視されますか? – BoltClock

+0

実際には違いがあります。 '.ready()'呼び出しがどのjQueryオブジェクトでも動作すると言っていますか?それが本当なら、なぜあなたは '$ .ready(...)'を使うことができないでしょうか? –

+0

@ Greg、Bolt:更新しました。私は早急に別の考えを質問に押し付けました。 – user113716