2017-01-31 6 views
1

jQueryでは、ドキュメントが他のすべてのものと同じように選択するための文字列として渡されず、文字列として渡されないものがあるのはなぜですか?jQueryでドキュメントが文字列として渡されないのはなぜですか?

たとえば、h1要素があるとします。

$("document").click(function(){ 
    $("h1").after("<p>lorem ipsum</p>"); //doesn't work 
}) 

$(document).click(function(){ 
    $("h1").after("<p>lorem ipsum</p>"); //works 
}) 
+0

文字列がdocument.querySelectorAll方法に置かれwindow.documentないだろう。文書の内部を検索します。したがって、document.querySelectorAll( "document")は空のコレクションを返します。 –

+0

jQueryは、jQueryオブジェクトを作成するためのパラメータとして文字列(通常はCSSセレクタ)またはDOMノードを受け入れます。 'document'はDOMノードです。' 'h1 ''はセレクタである文字列です。 '' document "'はセレクタでもDOMノードでもありません。 – sabithpocker

+0

'jQuery'関数は、異なる文字列を扱う異なる引数型を受け取るためにオーバーロードされます。要素やドキュメントを直接渡すことができます。これらのノードを参照する新しいjQueryオブジェクトが作成されます。文字列を渡すときは、セレクタ文字列を意図したものか、新しい要素を作成するためのHTMLかどうかを調べる必要があります。関数を渡すと、ページがロードされたときに呼び出されます。 –

答えて

4

documentwindow.documentから来ているが、windowがデフォルトスコープである)JavaScriptで変数です。これをjQuery Selectorでラップすると、jQueryオブジェクトに変換されます。

文字列を使用すると、jQueryはセレクタにそれを渡したと考えます。 jQuery(または実際にはJavaScript)はDOM内の要素を見つけようとしますが、DOM内に "document"型の要素が存在しないため、失敗します。

+1

* jQueryオブジェクト。 Theresはjquery変数のようにsthではありません –

+0

jQueryではなくJavascriptを記述しました。 Javascriptの変数です。変数の型はobjectです。 –

+0

申し訳ありません私はすでに訂正してくれたことを忘れてしまいました。 –

0

ドキュメントはウィンドウのプロパティであり、オブジェクトなので、 ログアウトで確認できますconsole.log(window.document)

jQueryセレクター関数は、有効な選択を文字列またはDOMノードオブジェクトとして選択します。ドキュメントと呼ばれる要素がないため、$("document")は機能しません。 $(document)または$(window.document)は有効なDomノードであるため動作します。

は、最初の場合は、 $("document")が仕事になる要素と呼ばれる文書を作成するために、 document.createElement('document')を走っていますが、新しい要素を選択し、

+2

ブラウザでのみ説明が欠落しています(なぜ$( "document")が動作しないのですか)... –

関連する問題