<p>In the first formulation listed above, <code>jQuery()</code> — which can also be written as <code>$()</code> — searches through the DOM for any elements that match the provided selector and creates a new jQuery object that references these elements:</p>
<pre>$('div.foo');</pre>
<h4id="selector-context">Selector Context</h4>
<p>By default, selectors perform their searches within the DOM starting at the document root. However, an alternate context can be given for the search by using the optional second parameter to the <code>$()</code> function. For example, if within a callback function we wish to do a search for an element, we can restrict that search:</p>
<pre>
$('div.foo').click(function() {
$('span', this).addClass('bar');
});
</pre>
<p>Since we've restricted the span selector to the context of <code>this</code>, only spans within the clicked element will get the additional class.</p>
<p>Internally, selector context is implemented with the <code>.find()</code> method, so <code>$('span', this)</code> is equivalent to <code>$(this).find('span')</code>.</p>
<h4id="using-dom-elements">Using DOM elements</h4>
<p>The second and third formulations of this function allow us to create a jQuery object using a DOM element or elements that we have already found in some other way. A common use of this facility is to call jQuery methods on an element that has been passed to a callback function through the keyword <code>this</code>:</p>
<pre>
$('div.foo').click(function() {
$(this).slideUp();
});
</pre>
<p>This example causes elements to be hidden with a sliding animation when clicked. Because the handler receives the clicked item in the <code>this</code> keyword as a bare DOM element, the element must be wrapped in a jQuery object before we can call jQuery methods on it.</p>
<p>When XML data is returned from an Ajax call, we can use the <code>$()</code> function to wrap it in a jQuery object that we can easily work with. Once this is done, we can retrieve individual elements of the XML structure using <code>.find()</code> and other DOM traversal methods.</p>
<p>When a jQuery object is passed as a parameter to the <code>$()</code> function, a clone of the object is created. This new jQuery object references the same DOM elements as the initial one.</p>
<h4id="returning-empty-set">Returning an Empty Set</h4>
<p>As of jQuery 1.4, if you pass no arguments in to the <code>jQuery()</code> method, an empty jQuery set will be returned. In previous versions of jQuery, a set containing the document node would be returned.</p>
</div>
<h3>Examples:</h3>
<divid="entry-examples"class="entry-examples">
<divid="example-0">
<h4>Example: <spanclass="desc">Finds all p elements that are children of a div element.</span>
<pclass="arguement"><strong>html</strong>A string defining a single, standalone, HTML element (e.g. <div/> or <div>).</p>
<pclass="arguement"><strong>props</strong>Attributes, events, and methods to call on the newly-created element.</p>
</li>
</ul>
<divclass="longdesc">
<h4id="creating-new-elements">Creating New Elements</h4>
<p>If a string is passed as the parameter to <code>$()</code>, jQuery examines the string to see if it looks like HTML (i.e., it has <code><tag ... ></code> somewhere within the string). If not, the string is interpreted as a selector expression, as explained above. But if the string appears to be an HTML snippet, jQuery attempts to create new DOM elements as described by the HTML. Then a jQuery object is created and returned that refers to these elements. We can perform any of the usual jQuery methods on this object:</p>
<p>When the HTML is more complex than a single tag without attributes, as it is in the above example, the actual creation of the elements is handled by the browser's <code>innerHTML</code> mechanism. Specifically, jQuery creates a new <div> element and sets the innerHTML property of the element to the HTML snippet that was passed in. When the parameter has a single tag, such as <code>$('<img />')</code> or <code>$('<a></a>')</code>, jQuery creates the element using the native JavaScript <code>createElement()</code> function.</p>
<p>To ensure cross-platform compatibility, the snippet must be well-formed. Tags that can contain other elements should be paired with a closing tag:</p>
<p>Alternatively, jQuery allows XML-like tag syntax (with or without a space before the slash):</p>
<pre>$('<a/>');</pre>
<p>Tags that cannot contain elements may be quick-closed or not:</p>
<pre>$('<img />');
$('<input>');
</pre>
<p>As of jQuery 1.4, we can pass a map of properties to the second argument. This argument accepts a superset of properties that can be passed to the <ahref="/attr">.attr()</a> method. Furthermore, any <ahref="/category/events/">event type</a> can be passed in, and the following jQuery methods can be called: <ahref="/val">val</a>, <ahref="/css">css</a>, <ahref="/html">html</a>, <ahref="/text">text</a>, <ahref="/data">data</a>, <ahref="/width">width</a>, <ahref="/height">height</a>, or <ahref="/offset">offset</a>.</p>
</div>
<h3>Examples:</h3>
<divid="entry-examples"class="entry-examples">
<divid="example-0">
<h4>Example: <spanclass="desc">Creates a div element (and all of its contents) dynamically, and appends it to the body element. Internally, an element is created and its innerHTML property set to the given markup. It is therefore both quite flexible and limited.</span>
<pclass="arguement"><strong>callback</strong>The function to execute when the DOM is ready.</p>
</li></ul>
<divclass="longdesc"><p>This function behaves just like <code>$(document).ready()</code>, in that it should be used to wrap other <code>$()</code> operations on your page that depend on the DOM being ready. While this function is, technically, chainable, there really isn't much use for chaining against it.</p></div>
<h3>Examples:</h3>
<divid="entry-examples"class="entry-examples">
<divid="example-0">
<h4>Example: <spanclass="desc">Executes the function when the DOM is ready to be used.</span>
</h4>
<pre><codeclass="example">$(function(){
// Document is ready
});</code></pre>
</div>
<divid="example-1">
<h4>Example: <spanclass="desc">Uses both the shortcut for $(document).ready() and the argument to write failsafe jQuery code using the $ alias, without relying on the global alias.</span>