jQuery Dynatree,按标题选择子节点?

时间:2013-03-07 17:13:53

标签: javascript jquery dynatree jquery-dynatree

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

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

我有第二个dynatree,其中包含多个" parent"和#34;孩子"节点,并希望选择其中一个"孩子"我在应用程序中使用单独的事件(按钮单击)时以编程方式。我想使用子节点的标题,但我很难找到正确的语法来做到这一点。我确实探索过这个网站上的其他dynatree线程,而且还没有找到我正在寻找的东西(或者它很接近,但是我的经验不足使我无法看到它)。我假设代码与上面的代码类似,使用"访问" ..但我不知道此后该去哪里。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分:0)

您可能正在寻找

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

将使用从外部事件激活节点。这是来自&{34;编程dynatree"

下的dynaTree documentation 第二个示例

我没有找到一种方法来查找节点的名称而不是键,可能有更好的方法,但我认为你可以使用访问找到密钥,然后像这样激活它

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
}