<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet type='text/xsl' href='docs-1.7.xsl'?>
<entries><entry type='method' name="find" return="jQuery">
  <signature>
    <added>1.0</added>
    <argument name="selector" type="Selector">
        <desc>A string containing a selector expression to match elements against.</desc>
    </argument>
  </signature>
  <signature>
    <added>1.6</added>
    <argument name="jQuery object" type="Object">
      <desc>A jQuery object to match elements against.</desc>
    </argument>
  </signature>
  <signature>
    <added>1.6</added>
    <argument name="element" type="Element">
      <desc>An element to match elements against.</desc>
    </argument>
  </signature>

  <desc>Get the descendants of each element in the current set of matched elements, filtered by a selector, jQuery object, or element.</desc>
  <longdesc><p>Given a jQuery object that represents a set of DOM elements, the <code>.find()</code> method allows us to search through the descendants of these elements in the DOM tree and construct a new jQuery object from the matching elements. The <code>.find()</code> and <code>.children()</code> methods are similar, except that the latter only travels a single level down the DOM tree.</p>
  <p>The first signature for the <code>.find()</code>method accepts a selector expression of the same type that we can pass to the <code>$()</code> function. The elements will be filtered by testing whether they match this selector.</p>
  <p>Consider a page with a basic nested list on it:</p>
<pre>
&lt;ul class="level-1"&gt;
  &lt;li class="item-i"&gt;I&lt;/li&gt;
  &lt;li class="item-ii"&gt;II
    &lt;ul class="level-2"&gt;
      &lt;li class="item-a"&gt;A&lt;/li&gt;
      &lt;li class="item-b"&gt;B
        &lt;ul class="level-3"&gt;
          &lt;li class="item-1"&gt;1&lt;/li&gt;
          &lt;li class="item-2"&gt;2&lt;/li&gt;
          &lt;li class="item-3"&gt;3&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
      &lt;li class="item-c"&gt;C&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li class="item-iii"&gt;III&lt;/li&gt;
&lt;/ul&gt;
</pre>
  <p>If we begin at item II, we can find list items within it:</p>
  <pre>$('li.item-ii').find('li').css('background-color', 'red');</pre>
  <p>The result of this call is a red background on items A, B, 1, 2, 3, and C. Even though item II matches the selector expression, it is not included in the results; only descendants are considered candidates for the match.</p>
  <blockquote><p>Unlike in the rest of the tree traversal methods, the selector expression is required in a call to <code>.find()</code>. If we need to retrieve all of the descendant elements, we can pass in the universal selector <code>'*'</code> to accomplish this.</p></blockquote>
  <p><a href="http://api.jquery.com/jquery/#selector-context">Selector context</a> is implemented with the <code>.find()</code> <code>method;</code> therefore, <code>$('li.item-ii').find('li')</code> is equivalent to <code>$('li', 'li.item-ii')</code>.</p>
  <p><strong>As of jQuery 1.6</strong>, we can also filter the selection with a given jQuery collection or element. With the same nested list as above, if we start with:</p>
  <pre>var $allListElements = $('li');</pre>
  <p>And then pass this jQuery object to find:</p>
  <pre>$('li.item-ii').find( $allListElements );</pre>
  <p>This will return a jQuery collection which contains only the list elements that are descendants of item II.</p>
  <p>Similarly, an element may also be passed to find:</p>
<pre>
var item1 = $('li.item-1')[0];
$('li.item-ii').find( item1 ).css('background-color', 'red');
</pre>
  <p>The result of this call would be a red background on item 1.</p>
</longdesc>

<example>
  <desc>Starts with all paragraphs and searches for descendant span elements, same as $("p span")</desc>
  <code><![CDATA[
  $("p").find("span").css('color','red');
]]></code>
  <html><![CDATA[<p><span>Hello</span>, how are you?</p>
<p>Me? I'm <span>good</span>.</p>]]></html>
</example>

<example>
  <desc>A selection using a jQuery collection of all span tags. Only spans within p tags are changed to red while others are left blue.</desc>
<css><![CDATA[
    span { color: blue; }
  ]]></css>
<code><![CDATA[
  var $spans = $('span');
  $("p").find( $spans ).css('color','red');
]]></code>
<html><![CDATA[<p><span>Hello</span>, how are you?</p>
  <p>Me? I'm <span>good</span>.</p>
  <div>Did you <span>eat</span> yet?</div>]]></html>
</example>

<example>
  <desc>Add spans around each word then add a hover and italicize words with the letter <strong>t</strong>.</desc>
  <code><![CDATA[
  var newText = $("p").text().split(" ").join("</span> <span>");
  newText = "<span>" + newText + "</span>";

  $("p").html( newText )
    .find('span')
    .hover(function() {
      $(this).addClass("hilite");
    },
      function() { $(this).removeClass("hilite");
    })
  .end()
    .find(":contains('t')")
    .css({"font-style":"italic", "font-weight":"bolder"});

]]></code>
  <css><![CDATA[
  p { font-size:20px; width:200px; cursor:default;
      color:blue; font-weight:bold; margin:0 10px; }
  .hilite { background:yellow; }
  ]]></css>
<html><![CDATA[<p>
  When the day is short
  find that which matters to you
  or stop believing
  </p>]]></html>
</example>

<category name="Tree Traversal"/>
<category name="Version 1.0"/>
<category name="Version 1.6"/>
</entry></entries>