jquery dynatree ajax,Dynatree在使用ajax时忽略选择属性

宋伟泽
2023-12-01

我正在使用dynatree插件显示复选框树,使用多选模式(模式3)。Dynatree在使用ajax时忽略选择属性

当树使用ajax(没有延迟加载)初始化时,它似乎忘记了一些节点最初被选中加载。当我选择其中一个节点时,传递给onSelect处理程序的标志值为true,即:它认为我想选择节点。

当我再次单击复选框时,将取消选择。似乎在后台选择没有注册,直到我物理点击复选框。我想加载这个节点已经选择的节点。

我用来加载树的json对我来说看起来很好; 选择属性对于有问题的节点即根节点是正确的。这里是JSON的一个片段:

{

"expand":true,

"title":"All",

"isFolder":false,

"key":"0",

"isLazy":false,

"addClass":null,

"select":true,

"unselectable":false,

"children": [... omitted for clarity]

}

UPDATE

我加载树是这样的:

$("#locationsTree").dynatree({

checkbox: true,

selectMode: 3,

initAjax: {

type: "POST",

url: dynaTreeInitUrl

},

classNames:

{

nodeIcon: ""

}

});

其中dynaTreeInitUrl是返回JSON的URL。

如果我硬编码的JSON像这样:

$("#locationsTree").dynatree({

checkbox: true,

selectMode: 3,

children: {

"expand":true,

"title":"All",

"isFolder":false,

"key":"0",

"isLazy":false,

"addClass":null,

"select":true,

"unselectable":false,

"children": [{

"expand": true,

"title": "Child",

"isFolder": false,

"key": "1",

"isLazy": false,

"addClass": null,

"select": true,

"unselectable": true,

"children": []

}]

},

classNames:

{

nodeIcon: ""

}

});

它的工作原理。 :/

UPDATE:

我发现为什么发生这种情况:

这是dynatree的错误 - 或者打算在那里试图太聪明的行为。

如果子节点具有unselectable = true,则在加载子级时父级将被取消选定,即使父级具有select = true。这使得无法在选择层次结构的情况下创建树 - 即:如果选择了父项,则将自动选择所有子项,并且不能取消选择。我想这可以作为另一个“模式”添加到dynatree中。

2013-01-02

Kev

+0

你能够建立一个演示页? –

+0

我会尝试一下,但是,只有当我使用ajax加载树时才会出现问题 - 如果我使用children属性对json数据进行硬编码,那么它完美地工作。我不知道如何复制jsFiddle或类似的ajax调用。 –

+0

jsfiddle有一个用于测试ajax的echo服务,文档是[here](http://doc.jsfiddle.net/use/echo.html)。我会自己设置演示,但我相信你会得到更多的帮助。 –

 类似资料: