tags:

views:

626

answers:

7

I have read the JQuery documentation, and while much attention is devoted to what you should pass the function, I don't see any information on what it actually returns.

In particular, does it always return an array, even if only one element is found? Does it return null when nothing is found? Where is this documented?

I understand that jquery methods can be applied to the return value, but what if I want to just use the return value directly?

+3  A: 

The jQuery function (i.e. "$") always returns a jQuery object in every instance.

Andrew Hare
http://en.wikipedia.org/wiki/Begging_the_question
harpo
+7  A: 

It doesn't return an array, it returns a jQuery object. The jQuery object is what contains all the special jQuery methods.

It never returns null, or another type. If one element is found, the jQuery object will have only one child. If no elements are found, the jQuery object will be empty.

John Millikin
+6  A: 

From Rick Strahl's description:

The jQuery Object: The Wrapped Set: Selectors return a jQuery object known as the "wrapped set," which is an array-like structure that contains all the selected DOM elements. You can iterate over the wrapped set like an array or access individual elements via the indexer ($(sel)[0] for example). More importantly, you can also apply jQuery functions against all the selected elements.

About returning nothing:

Does it always return an array? Does it return null?

You always get the same thing back, whether or not it has any contents is the question. Typically you can check this by using .val() (e.g. $('.myElem').val())

Ian Robinson
Great, thanks... this is very helpful. I didn't know that a user-defined object could at the same time be so "array-like" -- I guess that's the genius of jquery.
harpo
You're welcome - I also just edited and added the full link to Rick Strahl's article - it's a good read.
Ian Robinson
For the question that led me here, namely, how do you check whether anything was found, I went with **$(query).length**, which seems to do the trick.
harpo
+2  A: 

The fact that $() always returns the jQuery function lets you chain jQuery function calls judiciously.

Stefan Kendall
A: 

According to firebug, it returns an array of objects that match to your selector. But this array is a jQuery object, that more methods than a simple Array.

eKek0
+1  A: 

As another answerer mentioned, it always returns the jQuery object.

This object always contains an array of elements (even if it is an empty array, or an array with just one object).

If you'd like to use the returned object "directly", as in, as a plain element, you can do one of the following:

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

Their documentation lists a few of the core calls you can use with "$" and what they return

Jugglingnutcase