0

鉴于此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/

谢谢。

4

1 回答 1

0

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

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

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

    if ( selector && typeof selector === "string" ) {
        ret = jQuery.filter( selector, ret );
    }
于 2012-08-16T05:28:44.310 回答