代码之家  ›  专栏  ›  技术社区  ›  Marcelo Cantos

jquery simpletree:通过编程添加节点

  •  0
  • Marcelo Cantos  · 技术社区  · 16 年前

    我正在尝试向jquery添加一个新节点 SimpleTree 但我能得到的似乎只是“stc.addnode不是一个函数”…

    var simpleTreeCollection = $('.simpleTree').simpleTree({
        animate:true,
        drag:false,
        autoclose: false,
        afterClick:function(node){},
        afterDblClick:function(node){},
        beforeMove:function (destination, source, pos){},
        afterMove:function(destination, source, pos){},
        afterAjax:function() {},
        afterContextMenu:function(node){}
    });
    
    simpleTreeCollection.addNode('test', 'test');
    

    有什么我可能做错什么的建议吗?是否有可能添加节点?

    4 回复  |  直到 14 年前
        1
  •  1
  •   redsquare    16 年前

    也许看看 jsTree

        2
  •  1
  •   redsquare    16 年前

    嗯,这很棘手,我不得不说我不喜欢这个插件,因为它使用数字作为ID,W3C说“属性的值必须以字母开始,范围是A-Z或A-Z,后面可能是字母……”。

    但是要使您工作,您需要首先选择其中一个节点,以便像这样添加到其中。

        //Select first child node in tree
        $('#2').click();
        //Add new node to selected node
        simpleTreeCollection.get(0).addNode(1,'A New Node')
    
        3
  •  0
  •   redsquare    16 年前

    仅供参考,上述代码在Firebug控制台的演示页面上工作。在树上,确保使用正确的选择器突出显示节点。

        4
  •  0
  •   Buffoverflow    15 年前

    我通过编辑addnode函数解决了这个问题。我评论了temp_node.remove();并添加了dragnode_destination.after(dragnode_source);

    就像这样:

            TREE.addNode = function(id, text, callback)
            {
                var temp_node = $('<li><ul><li id="'+id+'"><span>'+text+'</span></li></ul></li>');
                TREE.setTreeNodes(temp_node);
                dragNode_destination = TREE.getSelected();
                dragNode_source = $('.doc-last',temp_node);
                TREE.moveNodeToFolder(dragNode_destination);
    //          temp_node.remove();
                dragNode_destination.after(dragNode_source);
                if(typeof(callback) == 'function')
                {
                    callback(dragNode_destination, dragNode_source);
                }
            };