jQuery を使用して階層テーブルの行を展開/折りたたむ効率的な方法を探しています。問題は、展開と折りたたみの機能が異なることです。
- 最初は、クラスのある行のみ
level_0
が表示され、他のすべての行は非表示になります。 - expand は次のレベルのみを表示する必要があるため、行をクリックすると、行
id=10
のみが表示さid=11
れid=14
ます。 - 一方、 collapseは、現在のレベルよりも深いレベルで連続するすべての行を折りたたむ必要があります。たとえば、行の折りたたみをクリックすると、表示されている場合
id=10
、 ids11, 12, 13, 14
の行が非表示になります。
テーブル データは次のようになります。
<table id="mytable">
<tr class="level_0" id="10">...</td>
<tr class="level_1 parent_10" id="11">...</td>
<tr class="level_2 parent_11" id="12">...</td>
<tr class="level_2 parent_11" id="13">...</td>
<tr class="level_1 parent_10" id="14">...</td>
<tr class="level_0" id="15">...</td>
</table>
私の動かない解決策:
$('#mytable tr').live('click', function() {
var toggleClass = 'parent_' + $(this).attr('id');
$(this).nextAll('tr').each(function() {
if ($(this).is('.'+toggleClass)) {
$(this).toggleClass("showme");
}
});
});
問題は、次のレベルの行のみを折りたたむことです。クリックされた行の下に表示されている、より深いレベルの行は引き続き表示されます。
効率的な方法でこれを行う方法について、誰かがヒントを教えてくれますか? 必要に応じて、HTML コードを調整できます。
ヒントをありがとう。