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

3 番目の 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 に答える