Jquery Jstree复选框事件捕获

use*_*011 12 checkbox jquery click checked jstree

我是jQuery和jstree的新手.我正在使用jstree并使用xml填充数据.但是想要捕获每个节点的事件,无论是否与它们的ID一起检查.我试着用jstree的插件API一样change_state(),check_node()或者select_node(),但它不工作.此外,我想将所有选定的节点数据放入一个数组中进行进一步处理.任何人都可以帮忙吗?

谢谢...

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函数来处理节点.


Bob*_*Bob 3

当前版本的 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"));});