JavaScript. Подробное руководство, 6-е издание, стр. 326

<b>var paras = $(&quot;р&quot;); </b>

<b>paras.fіrst() // Выберет только первый элемент &lt;р&gt;</b>

<b>paras.last()  // Выберет только последний элемент &lt;р&gt;</b>

<b>paras.eq(1)   // Выберет второй элемент &lt;р&gt;</b>

<b>paras.eq(-2)  // Выберет второй с конца элемент &lt;р&gt;</b>

<b>paras[1]      // Сам второй элемент &lt;р&gt;</b>

Универсальным методом фильтрации выбора по позиции является метод

<b>slice().</b>
Этот метод действует подобно методу
<b>Array.slice()</b>
: он принимает начальный и конечный индексы (отрицательные индексы откладываются от конца массива) и возвращает объект
<b>jQuery</b>
, содержащий элементы с индексами от начального до конечного, не включая его. Если конечный индекс не указан, возвращаемый объект будет содержать все элементы от начального индекса и до конца:

<b>$(&quot;p&quot;).slice(2,5)   // Выберет 3-й, 4-й и 5-й элементы &lt;р&gt;</b>

<b>$(&quot;div&quot;).slice(-3)  // Последние три элемента &lt;div&gt;</b>

Метод

<b>filter()</b>
является универсальным методом фильтрации и может использоваться тремя разными способами:

• Если передать методу

<b>filter()</b>
строку с селектором, он вернет объект
<b>jQuery</b>
, содержащий только те из выбранных элементов, которые соответствуют этому селектору.

• Если передать методу

<b>filter()</b>
другой объект
<b>jQuery</b>
, он вернет новый объект
<b>jQuery</b>
, содержащий пересечение множеств элементов в двух исходных объектах
<b>jQuery</b>
. Методу можно также передать массив элементов и даже единственный элемент документа.

• Если передать методу

<b>filter()</b>
функцию-предикат, эта функция будет вызвана для каждого выбранного элемента и метод
<b>filter()</b>
вернет объект
<b>jQuery</b>
, содержащий только те элементы, для которых функция-предикат вернет true (или любое другое истинное значение). Элемент будет передан функции в виде значения ссылки
<b>this</b>
, а индекс элемента - в виде аргумента. (Смотрите также описание метода
<b>jQuery.grep()</b>
в разделе 19.7.)

<b>$(&quot;div&quot;).filter(&quot;.note&quot;)    // Аналогично $(&quot;div.note&quot;)</b>

<b>$(&quot;div&quot;).filter($(&quot;.note&quot;)) // Аналогично $(&quot;div.note&quot;)</b>

<b>$(&quot;div&quot;).filter(function(idx) { return idx%2==0 }) // Аналогично $(&quot;div:even&quot;)</b>

Метод

<b>not()</b>
действует точно так же, как метод
<b>filter(),</b>
за исключением того, что он инвертирует значение фильтра. Если передать методу
<b>not()</b>
строку с селектором, он вернет новый объект
<b>jQuery</b>
, содержащий только те из выбранных элементов, которые не соответствуют селектору. Если передать методу
<b>not()</b>
объект
<b>jQuery</b>
, массив элементов или единственный элемент, он вернет все выбранные элементы, кроме тех, что были явно указаны. Если передать методу
<b>not()</b>
функцию-предикат, он вызовет ее для каждого выбранного элемента, как и метод
<b>filter(),</b>
но вернет объект
<b>jQuery</b>
, содержащий только те выбранные элементы, для которых функция возвратит false или любое другое ложное значение:

<b>$(&quot;div&quot;).not(&quot;#header, #footer&quot;); // Все элементы &lt;div&gt;, кроме двух указанных</b>

В версии jQuery 1.4 имеется метод

<b>has(),</b>
обеспечивающий еще один способ фильтрации выбора. Если ему передать селектор, он вернет новый объект
<b>jQuery</b>
, содержащий только те из выбранных элементов, которые имеют потомков, соответствующих селектору. Если передать методу
<b>has()</b>
элемент документа, он вернет только те выбранные элементы, которые являются предками указанного элемента:

<b>$(&quot;р&quot;).has(&quot;а[href]&quot;) // Абзацы, включающие ссылки</b>

Метод

<b>add()</b>
не фильтрует и не сужает выбор, а расширяет его. Метод
<b>add()</b>
можно вызывать с любыми аргументами (кроме функций), которые можно передавать функции
<b>$()</b>
. Он возвращает первоначальное множество выбранных элементов, плюс элементы, которые были бы выбраны (или созданы) при передаче этих же аргументов функции
<b>$()</b>
. Метод
<b>add()</b>
удаляет повторные вхождения элементов и сортирует элементы в порядке их следования в документе:

<b>// Эквивалентные способы выбора всех элементов &lt;div&gt; и &lt;р&gt;</b>

<b>$(&quot;div, р&quot;)          // Используется группа селекторов</b>

<b>$(&quot;div&quot;).add(&quot;p&quot;)    // Передать методу add() селектор</b>

<b>$(&quot;div&quot;).add($(&quot;p&quot;)) // Передать методу add() объект jQuery</b>

<b>var paras = document.getElementsByTagName(&quot;p&quot;); // Объект, подобный массиву </b>

<b>$(&quot;div&quot;).add(paras); // Передать методу add() массив элементов</b>