gpt4 book ai didi

jquery - JSTREE - 刷新 jstree,以便重新运行 'bind("returned.jstree")' 内的所有代码

转载 作者:行者123 更新时间:2023-12-03 23:03:57 24 4
gpt4 key购买 nike

在我的页面上,我有一个按钮,单击该按钮会刷新该页面上找到的 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) {' 函数重新运行?

最佳答案

您可以自己触发事件

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

关于jquery - JSTREE - 刷新 jstree,以便重新运行 'bind("returned.jstree")' 内的所有代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8574918/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com