使用缓存的jQuery对象进行过滤

时间:2012-08-16 05:26:37

标签: jquery jquery-selectors

鉴于此html:

<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');

为什么第三个li元素的背景颜色为红色?我期望使用缓存的jQuery对象($ first)作为过滤器意味着什么都找不到。

的jsfiddle:

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

感谢。

1 个答案:

答案 0 :(得分:0)

.next仅将选择器 string 作为参数,因此您的参数将被忽略,并且实际上与以下内容相同:

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

来自source的相关部分,其中忽略非选择器字符串过滤器:

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