2011-03-02 18 views
3

我不完全是一個jQuery選擇器忍者,所以我問這個希望有人可以刺穿它。我使用jQuery模板來創建一個基於嵌套字典(它們嵌套5層左右)的行的表。它基於關於組織結構的數據以及每個組中的人員。根據下面的部分代碼,我的目標是 - 對於每個「團隊」行 - 獲取屬於該團隊的「人員」行。這是我所得到的,爲了便於閱讀而縮進。獲得行類「a」之後的類「b」行的集合,直到下一個非「b」行?

<tr class="division">...</tr> 
    <tr class="team">...</tr> 
     <tr class="person">...</tr> 
     <tr class="person">...</tr> 
    <tr class="team">...</tr> 
     <tr class="person">...</tr> 
     <tr class="person">...</tr> 
     <tr class="person">...</tr> 
<tr class="division">...</tr> 
    <tr class="team">...</tr> 

我現在已經是一個jQuery選擇器,獲取所有class="team"行,然後對每一行,我試圖找到選擇讓每個後續class="person"行,直到下一個非person行。我不明白。 有什麼需要去的地方.nextAll()方法

$('table tr.team').each(function() { 
    var personRows = $(this).nextUntil('tr.team'); 
    console.log('row count: ' + personRows.length); 
}); 

我登錄到控制檯暫且這麼控制檯輸出上面的HTML應與類似...

> row count: 2 
    > row count: 3 

不幸的是,我越來越沿線更多的東西這個,因爲那個"division"級的行。

> row count: 2 
    > row count: 4 

我已經費盡腦子想看看通過API來獲得我想要的,但我不能得到預期的效果。有任何想法嗎?優雅的解決方案我將不得不在某處插入if子句來確定該行是否是我想要包含在我的選擇器中的行?

回答

3

好吧,我想我只是想通了。我試了很長時間才發現問題,直到我發佈了一個問題後......你知道這是怎麼回事。

無論哪種情況,.filter()都是我的朋友。

var personRows = $(this).nextUntil('tr.team').filter('tr.person'); 
+0

另外值得注意的是:當我指定元素類型(在本例中是表格行)時,我只能得到想要的效果。 – 2011-03-09 20:49:50

相關問題