nextUntil() jQuery selector

nextUntil() jQuery selector

本文关键字:selector jQuery nextUntil      更新时间:2023-09-26

为什么会返回一个错误?

http://jsfiddle.net/L82JU/

Uncaught TypeError: Object [Object Object] has no method 'replace'

我想选择.x的第一个子代直到.x的第三个子代

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

.nextUntil()接受一个选择器而不是对象。试一试:

alert( a.eq(0).nextUntil( '.' + a.eq(3).attr('class') ).length );
http://jsfiddle.net/L82JU/3/

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

你可以试试这个:

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

或者如果你事先不知道具体的选择器:

alert(a.eq(0).nextAll().slice(2).length);
http://jsfiddle.net/L82JU/5/

nextUntil方法接受一个选择器,而不是一个元素。

同样,你不应该在nextUntil之前使用eq(0),这会将集合减少到第一个元素,并且你不能在只有一个元素的集合中循环到第三个元素。

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

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

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

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

选择'的所有子元素。