2012-08-16 4 views
0

Учитывая этот HTML:Фильтрация с использованием кэшированного объекта JQuery

<ul> 
    <li id="1">First</li> 
    <li id="2">Second</li> 
    <li id="3">Third</li> 
</ul>​​​​​​​​​​ 

И это JQuery:

var $first = $('li').eq(0), 
    $second = $('li').eq(1), 
    $third = $('li').eq(2); 

$second.next($first).css('background-color','red'); 

Почему третий элемент лития, учитывая цвет фона красного? Я ожидал, что использование кэшированного объекта jQuery ($ first) в качестве фильтра означает, что ничего не будет найдено.

jsFiddle:

http://jsfiddle.net/Rqw3F/1/

Спасибо.

+0

$ second.css ('background-color', 'red'); ?? – Parag

ответ

0

.next занимает селектор строку в качестве аргумента, так что ваш аргумент игнорируется и фактически то же самое, как:

$second.next().css('background-color','red'); 

Соответствующая часть из source, где игнорируются строковые фильтры не селекторные:

if (selector && typeof selector === "string") { 
     ret = jQuery.filter(selector, ret); 
    } 
+0

Ну ладно, спасибо. Кажется очевидным, теперь я смотрю на страницу api. Спасибо за показ источника. – Chris

Смежные вопросы