问题:
据提交人说,jsTree文档
当打开一个关闭的节点(没有加载子节点)时,会发出AJAX请求。
如何配置jsTree以处理为每个空/无子节点发出的这些AJAX数据请求?我希望我的空节点保持空(或者没有孩子)!
给予(简化):
JSON数据容器(data.json)
{
"data" : "Root node with no children",
"children" : []
}jsTree配置
{
"json_data" : {
"ajax" : {
"url" : "data.json",
"type" : "GET",
"dataType" : "json",
"dataFilter" : function (data, type) {
//some filtering function
}
}
},
"plugin" : ["json_data"]
}发布于 2011-08-11 05:23:44
将叶节点的状态标记为“叶”。这应该能解决问题。
发布于 2014-05-09 09:20:37
我在state=树的无子节点上设置属性“关闭”时遇到了这个问题。删除state属性解决了这个问题。
发布于 2011-05-24 07:28:02
几周前我也有过类似的问题。我在"url“字段中进行了函数调用,这最终导致java代码基于SQL查询生成JSON字符串。因此,当我单击一个无子的封闭节点时,该函数再次被调用,从而生成一棵无穷无尽的树。
我解决这个问题的方法是:
"json_data" : {
"ajax" : {
"url" : "getAreaTree?treeType=Areas&ownerPhone=<%=webSessionObject.getUserPhoneNum()%>",
"data" : function (n) {
return { id : n.attr ? n.attr("id") : 0 };
}
}
},"data“中定义的函数的结果将作为参数添加到"url”函数中。然后,我可以检查参数是0(初始加载)还是1(我的根的id )还是其他什么。
如果这对你不起作用,也许你可以试试这样的方法:
.bind("before.jstree",function(event,data){
if(data.func === "create"){
var foo = true;
data.inst._get_node(null, true).each(function () {
if(this.id!=rootId && this.id!=0){
foo = false;
})
if(!foo){
event.stopImmediatePropagation();
return false;
}
}
})但我不太确定这是否行得通。"before.jstree“在所有事件发生之前都会触发。我正在检查即将触发的函数是否为"create",如果是,则检查所选节点的id。如果不是根的id或0(初始加载),则停止create函数。
我在不同的情况下使用了类似的结构,所以类似的东西应该可以工作。这可能是“创建”事件不是您应该绑定到的东西。你可以把它改成
.bind("before.jstree",function(event,data){
console.log(data.func)
if(data.func === "create"){查看调用了哪些函数。
https://stackoverflow.com/questions/6095929
复制相似问题