2016-06-16 8 views
1

私は、ツリービューがどのように動作するかのように折りたたみ可能なテーブルを実装しています。 3つのレベルがあります。私の現在のコードでは、3つのレベルを拡張することができますが、最初のレベルを崩壊させると、レベル3はまだ表示されます。表示されたすべての行をテーブル内で折りたたむにはどうすればよいですか?

レベル1をクリックするとレベル3が崩壊する方法はありますか?

私のjqueryのは

$(function() { 
    $(".firstlevel").click(function(event) { 
    $(this).(".divider").filter(".secondlevel").toggle("slow"); 
    }); 

    $(".secondlevel").click(function(event) { 
    $(this).nextUntil(".secondlevel").toggle("slow"); 
    }); 
}); 

HTMLであるとjQueryは一例として、行レベルに対応したすべての行にhttps://jsfiddle.net/h4qacruv/

答えて

1

追加属性である:

<tr class="thirdlevel" data-level=3> 

そして、このコードを使用

$(function() { 

    $("tr[data-level]").click(function(event) { 
    //$(this).nextUntil(".divider").filter(".secondlevel").toggle("slow"); 
    var level = $(this).data('level'); 
    var that = $(this); 
    var siblings = $(this).toggleClass('shown').nextUntil('[data-level='+level+']:not(.divider)').filter(function(i) { 
     var shown = that.hasClass('shown'); 
     return shown 
     ? $(this).data('level') == level + 1 
     : $(this).data('level') >= level + 1; 
    });//.toggle('show'); 

    if (that.hasClass('shown')) { 
     siblings.show(); 
    } else { 
     siblings.removeClass('shown').hide(); 
    } 
    }); 
}); 
+0

Ronaldに感謝します。これは、最初の「レベル2」がクリックされたときに、すべての「レベル3」オプションを展開しますか? – user813813

+0

ああ、もう一度試してみてください。私はこのスクリプトを更新しました。今回は、それだけで隣接する高レベルの行を展開します。 – Ronald

関連する問題