Toa*_*ter 22
我喜欢jstree插件,但它没有很好的文档记录,也没有符合jquery ui标准的插件开发.我已经使用1.0rc2来完成你想要做的事情.
您必须在实例化jstree之前绑定"已加载"事件,因此我猜测它与"change_state"事件相同.需要注意的另一件事是"change_state"不仅仅是一个由于复选框而导致的更改.例如,当您展开节点时它也会触发(但由于某种原因不会崩溃).也就是说,我在"change_state"处理程序中进行了一些kludgey检查,尝试从复选框更改中过滤掉不需要的事件.点击处理程序的最小代码是
$("#treeElement").bind("change_state.jstree", function (e, d) {
var tagName = d.args[0].tagName;
var refreshing = d.inst.data.core.refreshing;
if ((tagName == "A" || tagName == "INS") &&
(refreshing != true && refreshing != "undefined")) {
//if a checkbox or it's text was clicked,
//and this is not due to a refresh or initial load, run this code . . .
}
});
Run Code Online (Sandbox Code Playgroud)
然后d.rslt,您单击的元素就可以获得d.inst.get_checked()仅针对单击的元素的检查项目,或者d.inst.get_checked(d.rslt)包含已检查的子节点的对象.使用jquery的.each函数来处理节点.
当前版本的 jstree 似乎在 check_node.jstree 绑定方面存在问题。此外,当当前版本的复选框插件处于活动状态时, select_node.jstree 绑定不会触发。
前往此处,您可以向创建者询问问题,甚至查看已经提出的问题。
至于$.jstree._reference("#demo").get_selected();你可以通过使用获取每个项目的ID$.jstree._reference("#demo").get_selected().each(function(index,element){alert($(element).attr("id"));});
| 归档时间: |
|
| 查看次数: |
15866 次 |
| 最近记录: |