在我的頁面上,我有一個按鈕,點擊該按鈕後刷新該頁面上的jstree。JSTREE - 刷新jstree,使bind(「loaded.jstree」)內的所有代碼都重新運行
<input type="button" value="Test" onclick='$j("#demo2").jstree("refresh");'/>
現在,當jstree加載時,將從2D數組讀取數據,並根據該數組中的數據更改節點圖標。 我需要一個函數,它將刷新或重新加載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) {'
函數內的所有代碼重新運行的一種方式?