jquery $は実際には何を返しますか?


113

私はJQueryのドキュメントを読みました、関数を渡す必要あることに多くの注意が払われています、実際に何が返されるかについての情報はありません。

特に、要素が1つしか見つからない場合でも、常に配列を返しますか?何も見つからない場合はnullを返しますか?これはどこに文書化されていますか?

jqueryメソッドを戻り値に適用できることを理解していますが、戻り値を直接使用したい場合はどうなりますか?

回答:


76

リックシュトラールの説明

jQueryオブジェクト:ラップされたセット:セレクターは、「ラップされたセット」と呼ばれるjQueryオブジェクトを返します。これは、選択されたすべてのDOM要素を含む配列のような構造です。配列のようにラップされたセットを反復処理したり、インデクサー($(sel)[0]など)を介して個々の要素にアクセスしたりできます。さらに重要なことに、選択したすべての要素に対してjQuery関数を適用することもできます。

何も返さないことについて:

常に配列を返しますか?nullを返しますか?

コンテンツが含まれているかどうかにかかわらず、常に同じものが返ってきます。通常、これは.val()を使用して確認できます(例:$( '。myElem')。val())


1
ありがとう、これはとても役に立ちます。ユーザー定義オブジェクトが同時に「配列のような」ものになる可能性があることを知りませんでした-それはjqueryの天才だと思います。
harpo

どういたしまして。RickStrahlの記事への完全なリンクも編集して追加しました-よく読んでください。
Ian Robinson、

14
ここで私を導いた質問、つまり何かが見つかったかどうかを確認する方法については、$(query).lengthを使用しましたが、これはトリックを実行しているようです。
harpo

3
セットのような配列とは...配列かオブジェクトか、それとも正確か?

26

配列は返さず、jQueryオブジェクトを返します。jQueryオブジェクトは、すべての特別なjQueryメソッドを含むものです。

nullや別の型を返すことはありません。1つの要素が見つかった場合、jQueryオブジェクトには1つの子しかありません。要素が見つからない場合、jQueryオブジェクトは空になります。


6

jQuery関数(つまり、 " $")は常に、すべてのインスタンスでjQueryオブジェクトを返します。


4
@harpo:まったくありません。問題のオブジェクトの名前が不十分なだけです。「jQueryオブジェクト」、別名$「a jQueryオブジェクト」、別名「ラップされたセット」。
ショーンマクミラン

5

別の回答者が述べたように、それは常に jQueryオブジェクトを返します。

このオブジェクトには常に要素の配列が含まれます(空の配列、または1つのオブジェクトのみの配列であっても)。

返されたオブジェクトをプレーン要素のように「直接」使用する場合は、次のいずれかを実行できます。

$('selector')[0] // element
$('selector').get(0) // element
$('selector').length // number of elements in the array

3

jQueryドキュメントから:

jQueryオブジェクト自体は配列のように動作します。これには長さのプロパティがあり、オブジェクトの要素には数値インデックス[0]から[長さ-1]でアクセスできます。jQueryオブジェクトは実際にはJavaScriptのArrayオブジェクトではないため、join()などの真のArrayオブジェクトのすべてのメソッドが含まれているわけではないことに注意してください。


2

$()は常にjQuery関数を返すという事実により、jQuery関数呼び出しを慎重にチェーンできます。


1
聞いて!$()jQuery関数(それ$自体)は返しませんが、便利なメソッドをすべて含むラップされたセットを返します。
ショーンマクミラン

1

jqueryセレクターのメカニズム

$("..") 、jqueryセレクターは、一致する要素を選択するために使用されます。

戻り値

それは常にlengthプロパティを持つ配列のようなjqueryオブジェクトを返します、

返されたjqueryオブジェクトのメソッドを呼び出す

オブジェクトでjqueryのメソッドを呼び出して、選択した要素に適用することができます。

インデックスで元の要素にアクセスする

選択された要素は、オブジェクトのプロパティとして保存され、それらのプロパティ名は0から始まるインデックス番号です。
したがって
、元の要素を取得した後、0から始まるインデックスでアクセスできますdocument.getElementXxx()

元の要素をjqueryオブジェクトにラップする

後に元の要素を取得し、あなたはjQueryオブジェクトであることを、それをラップすることができ、呼び出すことによって$(originalEle)
あなたは、ラップされたオブジェクトにjqueryのメソッドを呼び出すことができます。


0

firebugによると、セレクターに一致するオブジェクトの配列を返します。しかし、この配列はjQueryオブジェクトであり、単純な配列よりも多くのメソッドがあります。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.