3

私はこのようなツリービューテーブルを持っています: http://jsfiddle.net/NPGUx/6/と私は使用しています:

$('.toggle').trigger('click');

オンロードのすべての要素を非表示にするには、行が多すぎる (1000 ~ 1500 など) ため、「スクリプトの実行が遅いため、停止しますか?」というメッセージが表示されることが問題です。3回のように表示されます。

すべての要素を非表示にするためのより良いソリューションを作成するにはどうすればよいですか?

4

1 に答える 1

2

これはどう:-

レコードをレンダリングするときにクラスを折りたたみから展開に変更し、最後にこのクエリを使用して、0 番目のレベル以外のすべてを非表示にするか、レンダリング中に他のすべてのレベルの tr を非表示にします。

脚本

 $('tr[data-depth]').not('[data-depth=0]').hide(); // Or just render all tr's but this
      //with display:none css property.

フィルタを変更して、すべての tr からこれへのフィルタリングを回避します:-

      var rootDepth = $(this).closest('tr').data('depth');
      var findChildren = function (tr) {
        var depth = tr.data('depth');
        return tr.nextUntil('[data-depth=' + rootDepth + ']').filter(function(){
          return $(this).data('depth') > depth;
        });

HTML

 <tr data-depth="0" class="expand level0"> <!--Instead of collapse-->
    <td><span class="toggle expand"></span>Item 1</td> <!--Instead of collapse-->

デモ

于 2013-05-16T02:33:38.290 に答える