【问题标题】:Jstree 3.2.1 not highlighting selected nodesJstree 3.2.1 未突出显示选定节点
【发布时间】:2015-12-14 20:34:26
【问题描述】:

我只是想知道 Plugin["ui"] 在 jstree 3.2.1 中是否仍然可用,因为目前它没有突出显示树上的任何内容,唯一可以突出显示所选节点的方法是使用“keep_selected_style ":是的,但这不是我想要的,因为现在它会突出显示每次能够选择多个节点。

有什么想法或帮助吗?

【问题讨论】:

  • 什么是突出显示?您可以开箱即用地选择多个节点,无需插件,只需按住 ctrl 按钮。
  • @NikolayErmakov 我的意思是当我选择节点时突出显示它应该通过给它一个更深的颜色来显示它被选中。
  • 在这个小提琴https://jsfiddle.net/ermakovnikolay/7bax2L5o/ 中,您可以单击一个节点并用蓝色突出显示它。如果在单击节点时按住 ctrl 按钮,则可以有多个选择。这真的是你的问题吗?
  • @NikolayErmakov 听起来并不愚蠢,这正是我想要的。但是从您的小提琴中,我只是在插件中添加了“复选框”,然后整个事情就完全不同了,因为现在可以选择每个节点。我的树的工作方式是使用复选框,这就是我获取节点 ID 的方式。我确实更新了你的小提琴。请记住,我不会将树硬编码到核心中 我使用数据库 我从服务器端获取所有信息,然后将其发送到核心。

标签: jstree


【解决方案1】:

如果您希望复选框以这种方式运行:1)单击任何未选中的复选框节点会删除先前的选择并将新的选择设置为当前的复选框节点,以及 2)能够选择多个仅持有 ctrl 的复选框按钮 - 您可以向 select_node 事件添加一些代码,如下所示:

    var selectedNodeId = data.node.id,
        ctrlKeyPressed = data.event.originalEvent.ctrlKey,
        currentlySelectedNodes = [];

      if( !ctrlKeyPressed ){ 
        // deselect all selected except current
        currentlySelectedNodeIds = $('#tree').jstree().get_selected();
        for(var i=0, len=currentlySelectedNodeIds.length;i<len;i++){
                if (currentlySelectedNodeIds[i] !== selectedNodeId) {
                    $('#tree').jstree().deselect_node( currentlySelectedNodeIds[i] );
            }
        }
      }

查看Fiddle

【讨论】:

  • 非常感谢 Nikolay,感谢您的帮助。 = )
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多