【问题标题】:Jquery Jstree checkbox events captureJquery Jstree 复选框事件捕获
【发布时间】:2011-06-17 05:07:54
【问题描述】:

我对 jQuery 和 jstree 完全陌生。我正在使用 jstree 并使用 xml 填充数据。但是想为每个节点捕获事件,无论是否检查以及它们的 ID。我尝试使用 jstree 的插件 API,例如 change_state()check_node()select_node(),但它不起作用。另外我想在一个数组中获取所有选定的节点数据以进行进一步处理..有人可以帮忙吗?

谢谢...

【问题讨论】:

  • 你用的是哪个jstree插件?
  • @Vivek 可能是 jquery.jstree。 @user529011 你能举一个你使用的代码的例子吗?也许将您的问题隔离在jsfiddle.net
  • 函数checked_unchecked(){ $.jstree._reference("#demo").get_selected();这给了我对象,但没有检查项目的 ID。还尝试将 check_node 和 select_node 绑定为 .jstree().bind("check_node.jstree",function(data){ alert(data); }) 但没有结果

标签: jquery click checkbox jstree checked


【解决方案1】:

我喜欢 jstree 插件,但它没有很好的文档记录,也不是为了符合插件开发的 jquery ui 标准而构建的。我已经使用 1.0rc2 来完成你想要做的事情。

您必须在实例化 jstree 之前绑定“loaded”事件,所以我猜它与“change_state”事件相同。需要注意的另一件事是“change_state”不仅仅是由于复选框而导致的更改。例如,当您展开节点时它也会触发(但由于某种原因不会折叠)。也就是说,我在“change_state”处理程序中进行了一些杂乱的检查,以尝试从复选框更改中过滤掉不需要的事件。点击处理程序的最少代码是

$("#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 函数来处理节点。

【讨论】:

  • 在没有明显事件 API 的情况下为数据树编写复选框插件有什么意义?!似乎有点疏忽!
  • 我收回了 - check_node.jstreeuncheck_node.jstree 事件被触发,它只是不在 jstree 的文档中。
  • 如何获取仅被点击的元素(即d.rslt)的属性? @Toadmyster
【解决方案2】:

当前版本的 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"));});获取每个项目的ID

【讨论】:

  • 简单说明——新版本的jstree使用“reference”(没有前导下划线)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-30
  • 1970-01-01
  • 1970-01-01
  • 2023-04-06
  • 1970-01-01
  • 2011-04-08
相关资源
最近更新 更多