2012-12-19 72 views
12

我有一個表格,點擊一個鏈接應該顯示屬於被點擊的行中的數據的'子行'。切換可變數量的表格行

由於subrows數量可能會有所不同,從0到n我想我應該計算.val方法的亞行數,這是正確的嗎?所以這個值應該是類名「附屬」的無效行數,直到下一個沒有類名的tr。我怎樣才能做到這一點? 我做了一些嘗試,但我對jQuery很新。

我覺得這樣的事情來計算tr.affiliated數量:

var affiliatednumber = $(this).find("tr.affiliated").val().stop(); 

DEMO

+0

爲什麼不使用ID屬性?可能會讓你的生活變得更容易 –

回答

3

http://jsfiddle.net/6t6QT/2/

您使用的.val.stop沒有任何意義,而沒有使用的輸入,但一個a。我使用.nextUntil,因爲這些行將被分組在一起;找到最接近的a父行(這是「主」行),並使用.nextUntil查找其附屬行 - 直到其他主行。如果主行有他們自己的類,它也會有所幫助。

+0

感謝您的解釋,仍然學習了很多,我一直試圖寫的第一件事情之一。解決方案看起來不錯,不需要任何html更改。感謝你的幫助! – user1901096

+0

對不起,再次打擾你,但我發現了一個'錯誤',有時我需要兩個tr的數據在一起。在這種情況下,約翰和約翰的妻子,問題是最接近的方法不再工作了,那麼請看例子:http://jsfiddle.net/6t6QT/2/我該如何解決這個問題? – user1901096

+0

@ user1901096我沒有看到任何關於約翰的妻子..你的意思是發佈一個單獨的鏈接? –

8

如果你把一個類上的每個父tr你可以使用nextUntil()這樣的:

<tbody> 
    <tr class="parent"> 
     <td>John</td> 
     <td>HR Admin</td> 
     <td>10/10/1980</td> 
     <td>Yes</td> 
     <td><a class="showaffiliated" href="#">Yes</a></td> 
    </tr> 
    <tr class="affiliated"> 
     <td colspan="2">Amanda</td> 
     <td colspan="3">20/20/1985</td> 
    </tr> 
    <tr class="affiliated"> 
     <td colspan="2">Louis</td> 
     <td colspan="3">20/10/2010</td> 
    </tr> 
</tbody> 
$("tr.affiliated").hide(); 

$("a.showaffiliated").click(function() { 
    var $affiliated = $(this).closest(".parent").nextUntil(".parent"); 
    $affiliated.toggle(); 
    var affiliatednumber = $affiliated.length; 
}); 

Example fiddle

+1

不錯 - 我甚至沒有意識到nextUntil()方法。每天學習新的東西:) – Syon

+1

即使答案是正確的,'nextUntil()'是一種效率非常低的方法([link](http://api.jquery.com/nextUntil/#comment-29884718))。一個更好的解決方案是將一個'tbody'中的子行分組並切換。 –

+0

感謝您的解決方案,可以添加一個類,儘管其他解決方案不需要一個。感謝您的幫助,感謝! – user1901096