我完全是jQuery和jstree的新手.我正在使用jstree并使用xml填充数据.但是想要捕获每个节点的事件,无论是否检查它们的Ids.我尝试使用jstree的插件API,如change_state(),check_node()或select_node(),但它不工作.此外,我想获取所有选定的节点数据在一个数组进一步处理.可以帮助任何人吗?
谢谢…
解决方法
我喜欢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 . . . } });
您点击的元素是d.rslt,您可以使用d.inst.get_checked()获取所检查项目,只需单击元素,或者使用d.inst.get_checked(d.rslt)查找包含所选子节点的对象.使用jquery的.each函数处理节点.