2017-01-26 20 views
0

ページに2つの列があり、左側にチェックボックスjstree、右側にデータテーブルを使用するテーブルがあります。表の行とツリーはすべて起動時にロードされます。ツリー上でノードが選択されたときに行を表示し、その行が非表示になっている場合は非表示にして、このクラスを使用しています。私はデータテーブル内のすべての行をループしてクラスを設定することで問題を抱えているので、それをフィルタリングできます。これは私が以下で使用しているコードですが、動作しません。私はテーブル行のIDを取得できません。JSTree with Datatables

table.rows().iterator('row', function (context, index) { 
       var tableNode = $(this.row(index).node()); 
       tableNode.removeClass('VisibleRow').removeClass('HiddenRow').addClass('HiddenRow'); 
      var id = tableNode.id; 
      var treeNode = data.instance.get_node(id); 

      if(treeNode != undefined){ 
       var currentId = '#row-' + node.id; 
       var rowInTable = table.row(currentId).node(); 
       $(rowInTable).removeClass("HiddenRow"); 
       $(rowInTable).addClass("VisibleRow"); 
      } 

}); 

これを行うより良い方法があるかどうか教えてください。ありがとう

+0

あなたの問題を解決しましたか? –

+0

ありがとうございました。私は修正することができ、それは働いた。 –

答えて

0

私はあなたが以下のスニペットでそれを行うことができると信じています。行の反復はjQueryベースであり、DataTables固有のロジックは存在しません。

またデモをチェック - Fiddle Demo

var $tableRows = $('#yourTableId').find('tr'); 

$('#yourTreeContainer').on('select_node.jstree', function(e, data) { 

    $tableRows.each(function() { 
     if (this.id === '#row-' + data.node.id) { 
      $(this).removeClass('HiddenRow'); 
     } else { 
      $(this).addClass('HiddenRow'); 
     } 
    }); 

});