2011-12-20 10 views
5

私のページには、クリックしたときにそのページにあるjstreeをリフレッシュするボタンがあります。今JSTREE - bind( "loaded.jstree")内のすべてのコードが再実行されるようにjstreeをリフレッシュする

<input type="button" value="Test" onclick='$j("#demo2").jstree("refresh");'/> 

、場合jstree負荷、データは2次元アレイから読み出され、ノードアイコンはそのアレイ内のデータに応じて変更されます。 jstreeをリフレッシュまたはリロードする機能が必要です。同時に、2D配列から読み取られたデータに基づいてノードの適切なアイコンを表示します。

'$j("#demo2").jstree("refresh");'を使用している場合、ツリーは再読み込みされますが、以前の開いた状態は保持されません。

jstreeコード

$j("#demo2").jstree({ 
      "ui" : { 
      "select_limit" : -1, 
      "select_multiple_modifier" : "ctrl", 
      "select_range_modifier" :"shift", 
      }, 

      "json_data" : { 
      "progressive_render" : false, 
      "selected_parent_open": true, 
      "ajax" : { 
       "url" : "/json/test1.json" 
      } 
      }, 

      "plugins" : [ "themes", "json_data", "ui", "crrm", "contextmenu" ], 

      'contextmenu' : { 
      'items' : customMenu 
      } 

     })//end of jstree function 


     /*************************************************************************** 
     When the jstree is first loaded, loop through the data retrieved 
     from the database (stored previously in a 2d array called 'status_from_db') and 
     select all jstree nodes found in that array. 
     ***************************************************************************/ 
    $j("#demo2").bind("loaded.jstree", function (e, data) {  
     var inst = data.inst; 
     var i; 
     for (i = 0; i < status_from_db.length; ++i) { 
      var node_name = status_from_db[i][0]; 
      $j("#demo2").find($j("li[name='"+node_name+"']")).each(function (k, v) { 
      inst.select_node(v); 

     /*************************************************************************** 
     Based on the retrieved data, assign the correct class to the variable 
     'selected_class and then modify the class of the <li> tag of the respective 
     node. 
     ***************************************************************************/ 
      var node_strength = status_from_db[i][1]; 
      var node_add_strength = status_from_db[i][2]; 
      var selected_class; 
      if (node_strength == "present" && node_add_strength == ""){ 
       selected_class = "jstree-icon4"; 
      } 
      else if (node_strength == "present" && node_add_strength == "strong") { 
       selected_class = "jstree-icon3"; 
      } 


      $j("li[name='"+node_name+"'] > ins").attr("class",selected_class);// set class to display new icon 
      $j("li[name='"+node_name+"'] > a ins").attr("class",selected_class);// set class to display new icon  
      }); 
     } 

    }); 

}); 

/リロード'$j("#demo2").bind("loaded.jstree", function (e, data) {'関数内のすべてのコードが再実行されるように、ツリーをリフレッシュする方法はありますか?

答えて

6

あなたは、イベントを自分で引き起こす可能性が

$j("#demo2").trigger("loaded.jstree"); 
0

あなたはデータのリロードにリンクされているツリーまたはノードを更新したときにトリガつのイベントがあります。それは

.bind("reopen.jstree", function(e,data) { 
関連する問題