我完全不熟悉jQuery和jstree。我正在使用jstree并使用xml填充数据。但是想要捕获每个节点的事件,无论是否与他们的ID一起检查。我尝试使用jstree的插件API,如change_state()
,check_node()
或select_node()
,但它不起作用。此外,我想获得一个数组中的所有选定的节点数据作进一步处理..任何人都可以帮忙吗?Jquery Jstree复选框事件捕获
谢谢...
我完全不熟悉jQuery和jstree。我正在使用jstree并使用xml填充数据。但是想要捕获每个节点的事件,无论是否与他们的ID一起检查。我尝试使用jstree的插件API,如change_state()
,check_node()
或select_node()
,但它不起作用。此外,我想获得一个数组中的所有选定的节点数据作进一步处理..任何人都可以帮忙吗?Jquery Jstree复选框事件捕获
谢谢...
当前版本jstree似乎已经与check_node.jstree结合的问题。 此外,select_node.jstree绑定不会在当前发行版激活复选框插件时触发。
转到HERE,您可以在其中询问创建者的问题,甚至查看已提问的问题。
至于$.jstree._reference("#demo").get_selected();
您可以通过使用$.jstree._reference("#demo").get_selected().each(function(index,element){alert($(element).attr("id"));});
我喜欢jstree插件获得每个项目的ID,但它不是有据可查的,也不是建立符合说,插件开发的jQuery UI的标准。我已经使用1.0rc2来完成你想要做的事情。
在实例化jstree之前,你必须绑定“loaded”事件,所以我猜它和“change_state”事件是一样的。另外要注意的是,“change_state”不仅仅是一个复选框的变化。例如,当你展开一个节点时它也会被触发(但由于某种原因,不会崩溃)。也就是说,我在“change_state”处理程序中做了一些kludgey检查,试图从checkbox变更中滤除不需要的事件。窃听处理程序的最小码为
$("#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函数来处理节点。
您正在使用哪个jstree插件? – Vivek 2011-01-28 12:13:10
@Vivek可能jquery.jstree。 @ user529011你可以举一个你使用的代码的例子吗?也许隔离你的问题在http://www.jsfiddle.net – Raynos 2011-01-28 12:28:11
jquery jstree v.1.0-版本 – user529011 2011-01-28 12:37:20