2011-10-04 43 views
0

所以我昨天問了一個非常類似的問題,關於嵌套列表的思考,我將能夠使用答案來創建嵌套列表和嵌套表。但是,當我嘗試修改jQuery來創建嵌套表時,它有點過時了。要麼它不嵌套,要麼與子<tr>的父母<tr>下的整個桌子嵌套,而不僅僅是子女<tr>的子女。示例表:jQuery創建基於屬性的嵌套表

<table> 
    <tbody> 
     <tr id="10"><td>Parent 1</td></tr> 
     <tr id="14"><td>Parent 2</td></tr> 
    </tbody> 
</table> 

<table> 
    <tbody> 
     <tr class="10"><td>Child A</td></tr> 
     <tr class="10"><td>Child B</td></tr> 
     <tr Class="14"><td>Child X</td></tr> 
    </tbody> 
</table> 

(這個jQuery是基於代碼vzwick非常慷慨地幫助我)jQuery的是這樣的:

$('tbody.csTR_children tr').each(function() { 
     probable_parent = $('tbody.csTR_parent tr#' + $(this).attr('class')); 
     if (probable_parent.length) { 
      if (!probable_parent.find('tbody').length) probable_parent.append('<tbody/>'); 
     $(this).detach().appendTo(probable_parent.find('tbody')); 
    } 
}); 

這是我得到的最接近它的巢整個表正如我上面所說的那樣,在每個父行下面(在IE中它正確地嵌套了第一個父母和孩子,但其餘的則沒有)。有什麼建議麼?

回答

0
$('tbody.csTR_children tr').each(function() { 
    probable_parent = $('#' + $(this).data('parentID')); 
    if (probable_parent.length) { 
     if (!probable_parent.find('tbody').length) 
     $(this).detach().insertAfter(probable_parent); 
    } 
}); 
0

看看這個。我認爲你想要做什麼:

$('table#child tr').each(function() { 
    var parentId = $(this).data('parentId'); 
    var parent = $('#' + parentId); 
    if (parent) { 
     var tbody = $('tbody', parent); 
     if (tbody.length == 0) { 
      // need to add the table wrapper 
      tbody = $('<tbody>'); 
      var table = $('<table>').append(tbody); 
      parent.append(table); 
     } 
     $(this).detach().appendTo(tbody); 
    } 
}); 

這裏是一個的jsfiddle你一起玩:http://jsfiddle.net/78aXx/2/

鮑勃

+0

謝謝您的回答!不過,如果你看看jsFiddle,它會在每個tr下面放置子表。我希望孩子直接在父母之下。 – kramden88

+0

'parent'是一個'tr',所以你不能附加一個表。 –

1

您試圖追加tbodytr這僅僅是完全錯誤的。一個tbody必須在table內直接和你不能直接把那個表中tr,它必須是在td

http://jsfiddle.net/ZDUQU/

所以基本上,該行的表追加到第一td

probable_parent.children(":first").append('<table><tbody></tbody></table>'); 
+0

謝謝。它很好地工作,但我遇到了一個小問題...如果我添加任何更多的TD到父母(或孩子),它會中斷。 – kramden88

+0

似乎對我很好:http://jsfiddle.net/ZDUQU/1/你可以更新小提琴併發布它壞了嗎? –

+0

對不起,我的意思是,如果我將td添加到現有的tr [jsfiddle.net/h6y5a/2/](http://jsfiddle.net/h6y5a/2/)。如果我用'$(this).detach()。appendTo(probable_parent.next('table')。find('tbody'));'替換你的最後一行代碼'''它接近但不是那裏。 – kramden88