2011-04-09 39 views
3

它爲什麼會返回一個錯誤?nextUntil()jQuery選擇器

http://jsfiddle.net/L82JU/

遺漏的類型錯誤:對象的翻譯:有沒有一種方法「替換」

我想選擇的.x的第一個孩子,直到第3子.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); 
+0

瀏覽器是否特定? Chrome – 2011-04-09 18:11:53

+0

@Anwar Chandra沒有錯誤:Chrome爲對象提供了不同的字符串值,這在jQuery中不會導致分析錯誤,但它仍然不會給你一些可以使用的東西作爲選擇器,所以它不能正常工作。 – Guffa 2011-04-09 18:18:49

回答

1

$.nextUntil預計字符串,而不是一個對象。在你的例子中,你傳遞了一個沒有replace方法的對象。你需要通過選擇器。

你可以代替試試這個:

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

或者,如果你不提前知道具體的時間選擇:

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

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

1

nextUntil方法需要選擇,不是一個元素。

此外,您不應該在nextUntil之前使用eq(0),這會將收集減少到第一個元素,並且無法僅使用一個元素循環到集合中的第三個元素。

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

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

我寧願把它寫這樣的,它的速度更快和更短:

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

這將選擇 '.X' 這是所有的孩子都小於4(1 3)。