我怎样才能读取部分选择的子节点的父节点(How can I read parent nodes wi

2019-09-17 15:47发布

我使用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>

当选择Key2_1Key2变为gray state ,你会看到Key2_1被添加到textField的文本框,我想有键2的textField场了。

注:选择的两个子节点Key2_1Key2_2也将选择父(key_2),但不能当它在gray mode

Answer 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(", "));
}


Answer 2:

var parent = node.getParent();
var parentnode = parent.data.key;

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



文章来源: How can I read parent nodes with partly selected child nodes