nextUntil()jQuery选择器

时间:2011-04-09 18:05:46

标签: javascript jquery

为什么会返回错误?

http://jsfiddle.net/L82JU/

未捕获的TypeError:对象[object Object]没有方法'replace'

我想选择.x的第一个孩子,直到.x的第3个孩子

HTML

<div class="x">
    <div class="a">a</div>
    <div class="b">b</div>
    <div class="c">c</div>
    <div class="d">d</div>
    <div class="e">e</div>
</div>

jquery的

a=$('.x').children();
alert(a.eq(0).nextUntil(a.eq(3)).length);

4 个答案:

答案 0 :(得分:3)

.nextUntil()使选择器不是对象。尝试:

alert( a.eq(0).nextUntil( '.' + a.eq(3).attr('class') ).length );

http://jsfiddle.net/L82JU/3/

答案 1 :(得分:1)

$.nextUntil需要一个字符串,而不是一个对象。在您的示例中,您传递的对象没有replace方法。你需要传递选择器。

您可以尝试这样做:

alert(a.eq(0).nextUntil('.d').length);

或者如果您未提前知道具体的选择器:

alert(a.eq(0).nextAll().slice(2).length);

http://jsfiddle.net/L82JU/5/

答案 2 :(得分:1)

nextUntil方法采用选择器,而不是元素。

此外,您不应在eq(0)之前使用nextUntil,这会将集合减少到第一个元素,并且您不能循环到只有一个元素的集合中的第三个元素。 / p>

http://jsfiddle.net/L82JU/4/

a=$('.x').children();
alert(a.nextUntil('.c').length);

答案 3 :(得分:1)

我宁愿这样写,它更快更短:

$('.x').children(':lt(4)');

这将选择“.x”的所有子项,小于4(1-3)。