1

我正在使用一些代码以编程方式选择动态树的根节点(其中唯一的一个),即

        $("#divDynaTree").dynatree("getRoot").visit(function (node) {
        node.select(true);
    });

我有第二个具有多个“父”和“子”节点的动态树,当我在应用程序中使用单独的事件(按钮单击)时,我想以编程方式选择其中一个“子”。我想使用子节点的标题,但很难找到正确的语法。我确实探索了这个网站和 goodle 上的其他 dynatree 线程,但还没有找到我正在寻找的确切内容(或者它可能很接近,但我的经验不足导致我没有看到它)。我假设代码将与上面类似,使用“访问”.. 但我现在不确定该去哪里。任何帮助,将不胜感激。

4

2 回答 2

2

试试这个选择所有子节点:

$(function(){
    var inEventHandler = false;
    $("#tree").dynatree({
        checkbox: true,
        selectMode: 2,
        [...]
        onSelect: function(select, dtnode) {
            // Ignore, if this is a recursive call
            if(inEventHandler) 
                return;
            // Select all children of currently selected node
            try {
                inEventHandler = true;
                dtnode.visit(function(childNode){
                    childNode.select(true);
                });
            } finally {
                inEventHandler = false;
            }
        }

或按名称搜索节点:

var match = null;
tree.visit(function(node){
    if(node.data.title === "foo"){
        match = node;
        return false; // stop traversal (if we are only interested in first match)
    }
});
alert("Found " + match);
于 2013-03-07T17:24:26.337 回答
0

您可能正在寻找

$("#tree").dynatree("getTree").activateKey("KeyName")

这将使用其key从外部事件激活节点。这是来自“Programming dynatree”下的dynaTree 文档的第二个示例

我没有寻找通过名称而不是键来查找节点的方法,可能有更好的方法,但我认为您可以使用访问来查找键,然后像这样激活它。

function ActivateNodeByTitle(nodeTitle){
    var $tree = $("#tree").dynatree("getTree")
    $tree.visit(function(node){
        if(node.data.title === nodeTitle){
            $tree.activateKey(node.data.key)
            return false; // stop traverse
        }
    });
    return false
}
于 2018-06-19T03:58:32.237 回答