JSTree select_node事件和复选框

时间:2011-01-05 10:06:23

标签: jquery checkbox jstree

我有一个jstree,其中我使用select_node事件来切换节点(展开),因此删除了树中的切换箭头,因为它们看起来很丑陋,我不需要它们。

现在我已添加了要在树中使用的复选框插件,但发现插件处于活动状态时禁用了select_node事件。

如何在复选框插件处于活动状态时切换节点,而无需重新添加丑陋的切换箭头?我可以在check / uncheck事件中执行此操作,但我不希望每次扩展节点时都选中/取消选中。

3 个答案:

答案 0 :(得分:2)

JsTree提供样式themes,因此您可以定义自己的样式并加载它。 你只需要替换精灵图像,这就是那个。

答案 1 :(得分:2)

假设您有http://www.jstree.com/documentation/checkbox中的示例树,其中包含 箭头删除。您无法在单击事件上执行复选框选择和分支切换,而不会中断ui交互。但是,由于非叶节点不携带模型数据 (它们的复选框仅用作select-all / deselect-all函数),你可以删除 来自它们的复选框,将点击事件重新定义为“toggle_node”,同时 把剩下的都留下来了。

您可以删除非叶子li节点上的复选框,并对其进行单击事件 切叶子。这将实现您期望的行为,但将删除 “选择全部/取消全选”非叶节点复选框的功能。

只需在示例页面上添加标有“+”的下面一行。

    $("#demo1").jstree({ 
       "plugins" : [ "themes", "html_data", "checkbox" ]
    });

+    $("#demo1 li").not(".jstree-leaf").each(function() {
+       $("a ins.jstree-checkbox", this).first().hide();
+       $("a", this).first().click(function(event) {
+          $("#demo1").jstree("toggle_node", "#"+$(this).parent().attr('id'));
+          event.stopPropagation();
+          event.preventDefault();
+       });
+    });

答案 2 :(得分:2)

最新版本的jstree现在允许通过单击复选框或节点标题来单独检查和选择节点。