【问题标题】:How can I read parent nodes with partly selected child nodes如何读取具有部分选定子节点的父节点
【发布时间】:2016-11-30 18:19:07
【问题描述】:

我在我的代码中使用 dynaTree http://wwwendt.de/tech/dynatree/index.html 来显示一个 2 级树。这棵树显示在selectMode = 3checkboxes 中,当用户选中一个节点复选框时,它的父级变为gray mode

在下一阶段,当用户单击按钮时,我会将所有选定的节点发送到服务器进行处理。 我想做的是将所有 gray mode 复选框也发送出去。

我怎样才能实现这个目标?

编辑: 这就是你需要的所有代码

<html>
<head>
    <link type="text/css" href="../css/ui.dynatree.css" rel="stylesheet">
    <script type="text/javascript" src="../js/jquery-1.7.1.min.js"></script>
    <script type="text/javascript" src="../js/jquery-ui-1.8.16.custom.min.js"></script>
    <script type="text/javascript" src="../js/jquery.dynatree.min.js"></script>
    <script type="text/javascript">
        var treeData = [
            { key: "key1", title: "Text 1" },
            { key: "Key2", title: "Text 2",
                children: [
                    { key: "Key2_1", title: "Text 2_1" },
                    { key: "Key2_2", title: "Text 2_2" },
                ]
            },
        ];

        $(function () {
            $("#tree").dynatree({
                checkbox: true,
                selectMode: 3,
                children: treeData,
                imagePath: "../images/Tree/",
                onSelect: function (select, node) {
                    var selKeys = $.map(node.tree.getSelectedNodes(), function (node) {
                        return node.data.key;
                    });
                    $('#textField').val(selKeys.join(", "));
                }
            });
        });
    </script>
</head>
<body>
    <div id="tree"></div>
    <input type="text" id="textField" value="" /><input type="button" id="button" onclick="alert($('#textField').val())" value="Send" />
</body>
</html>

选择 @987654327 @, @987654328 @ @转到 @987654329 @,您会看到 @987654330 @添加到 @987654331 @ @987654331 @toct box,我想在 @9877654444 @field @field @field @field @field。 >

注意:选择Key2_1Key2_2 的两个子节点也会选择父节点(key_2),但在gray mode 中时不会选择

【问题讨论】:

  • 请发布您正在使用的代码。

标签: javascript jquery dynatree


【解决方案1】:

似乎 dynaTree 没有查找部分选定节点的方法。 另一种解决方案是查找此类节点的类名。默认情况下,如果部分选择的节点的类名没有更改,它将是dynatree-partsel,但是具有完全选择的子节点的节点也分配了该类,因此我们需要选择其类中没有dynatree-selected 的节点。

一个肮脏的解决方案将 onSelect 方法定义更改为:

onSelect: function (select, node) {
    var selKeys = $.map(node.tree.getSelectedNodes(), function (node) {
        return node.data.key;
    });
    var partsel = new Array();
    $(".dynatree-partsel:not(.dynatree-selected)").each(function () {
        var node = $.ui.dynatree.getNode(this);
        partsel.push(node.data.key);
    });
    selKeys = selKeys.concat(partsel);
    $('#textField').val(selKeys.join(", "));
}

【讨论】:

    【解决方案2】:
    var parent = node.getParent();
    var parentnode = parent.data.key;
    

    parentnode 变量中你会得到父节点的值

    【讨论】:

    • 请仔细阅读要求!我需要找到选择了部分子节点的节点。
    最近更新 更多