Fancytree实例

一、实例

 

 

 

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>fancyTreeTest</title>
    <script src="jquery.js"></script>
    <script src="jquery-ui.min.js"></script>
    <link href="ui.fancytree.min.css" rel="stylesheet" />
    <script src="jquery.fancytree-all.min.js"></script>
    <script type="text/javascript">
        $(function () {
            //Create the tree inside the <div id="tree"> element.与zTree类似
            // 基础配置,返回数据包括
            $("#tree")
                .fancytree({
                    source: [
                        { "title": "Node 1", "key": "1" },
                        {
                            "title": "Folder 2",
                            "key": "2",
                            "folder": true,
                            "children": [
                                { "title": "Node 2.1", "key": "3" },
                                { "title": "Node 2.2", "key": "4" }
                            ]
                        }
                    ]
                });
        });
    </script>
                <script>
                    $.ui.fancytree.debugLevel = 1; // silence debug output
                    function logEvent(event, data, msg) {
                        //        var args = $.isArray(args) ? args.join(", ") :
                        msg = msg ? ": " + msg : "";
                        $.ui.fancytree.info("Event('" + event.type + "', node=" + data.node + ")" + msg);
                    }

                    $(function () {
                        $("#tree")
                            .fancytree({
                                checkbox: true,
                                // --- Tree events -------------------------------------------------
                                blurTree: function (event, data) {
                                    logEvent(event, data);
                                },
                                create: function (event, data) {
                                    logEvent(event, data);
                                },
                                init: function (event, data, flag) {
                                    logEvent(event, data, "flag=" + flag);
                                },
                                focusTree: function (event, data) {
                                    logEvent(event, data);
                                },
                                restore: function (event, data) {
                                    logEvent(event, data);
                                },
                                // --- Node events -------------------------------------------------
                                activate: function (event, data) {
                                    logEvent(event, data);
                                    var node = data.node;
                                    // acces node attributes
                                    $("#echoActive").text(node.title);
                                    if (!$.isEmptyObject(node.data)) {
                                        //                    alert("custom node data: " + JSON.stringify(node.data));
                                    }
                                },
                                beforeActivate: function (event, data) {
                                    logEvent(event, data, "current state=" + data.node.isActive());
                                    // return false to prevent default behavior (i.e. activation)
                                    //              return false;
                                },
                                beforeExpand: function (event, data) {
                                    logEvent(event, data, "current state=" + data.node.isExpanded());
                                    // return false to prevent default behavior (i.e. expanding or collapsing)
                                    //                return false;
                                },
                                beforeSelect: function (event, data) {
                                    //                console.log("select", event.originalEvent);
                                    logEvent(event, data, "current state=" + data.node.isSelected());
                                    // return false to prevent default behavior (i.e. selecting or deselecting)
                                    //                if( data.node.isFolder() ){
                                    //                    return false;
                                    //                }
                                },
                                blur: function (event, data) {
                                    logEvent(event, data);
                                    $("#echoFocused").text("-");
                                },
                                click: function (event, data) {
                                    logEvent(event, data, ", targetType=" + data.targetType);
                                    // return false to prevent default behavior (i.e. activation, ...)
                                    //return false;
                                },
                                collapse: function (event, data) {
                                    logEvent(event, data);
                                },
                                createNode: function (event, data) {
                                    // Optionally tweak data.node.span or bind handlers here
                                    logEvent(event, data);
                                },
                                dblclick: function (event, data) {
                                    logEvent(event, data);
                                    //                data.node.toggleSelect();
                                },
                                deactivate: function (event, data) {
                                    logEvent(event, data);
                                    $("#echoActive").text("-");
                                },
                                expand: function (event, data) {
                                    logEvent(event, data);
                                },
                                focus: function (event, data) {
                                    logEvent(event, data);
                                    $("#echoFocused").text(data.node.title);
                                },
                                keydown: function (event, data) {
                                    logEvent(event, data);
                                    switch (event.which) {
                                        case 32: // [space]
                                            data.node.toggleSelected();
                                            return false;
                                    }
                                },
                                keypress: function (event, data) {
                                    // currently unused
                                    logEvent(event, data);
                                },
                                lazyLoad: function (event, data) {
                                    logEvent(event, data);
                                    // return children or any other node source
                                    data.result = { url: "ajax-sub2.json" };
                                    //                data.result = [
                                    //                    {title: "A Lazy node", lazy: true},
                                    //                    {title: "Another node", selected: true}
                                    //                    ];
                                },
                                loadChildren: function (event, data) {
                                    logEvent(event, data);
                                },
                                loadError: function (event, data) {
                                    logEvent(event, data);
                                },
                                postProcess: function (event, data) {
                                    logEvent(event, data);
                                    // either modify the ajax response directly
                                    data.response[0].title += " - hello from postProcess";
                                    // or setup and return a new response object
                                    //                data.result = [{title: "set by postProcess"}];
                                },
                                removeNode: function (event, data) {
                                    // Optionally release resources
                                    logEvent(event, data);
                                },
                                renderNode: function (event, data) {
                                    // Optionally tweak data.node.span
                                    //              $(data.node.span).text(">>" + data.node.title);
                                    logEvent(event, data);
                                },
                                renderTitle: function (event, data) {
                                    // NOTE: may be removed!
                                    // When defined, must return a HTML string for the node title
                                    logEvent(event, data);
                                    //                return "new title";
                                },
                                select: function (event, data) {
                                    logEvent(event, data, "current state=" + data.node.isSelected());
                                    var s = data.tree.getSelectedNodes().join(", ");
                                    $("#echoSelected").text(s);
                                }
                            })
                            .bind("fancytreeactivate",
                                function (event, data) {
                                    // alternative way to bind to 'activate' event
                                                logEvent(event, data);
                                })
                            .on("mouseenter mouseleave",
                                ".fancytree-title",
                                function (event) {
                                    // Add a hover handler to all node titles (using event delegation)
                                    var node = $.ui.fancytree.getNode(event);
                                    node.info(event.type);
                                });
                        $("#btnSelect")
                            .click(function (event) {
                                var node = $("#tree").fancytree("getActiveNode");
                                node.setSelected(!node.isSelected());
                            });
                        $("#btnRemove")
                            .click(function (event) {
                                var node = $("#tree").fancytree("getActiveNode");
                                node.remove();
                            });
                    });
                </script>
</head>
<body>
    [...]
    <!--  show tree  -->
    <div id="tree">...</div>
    [...]
</body>
</html>

  总结:1)将body中的div换成table就会出现上边不同的结果,最右边结果

     2)对数的具体操作:

//获取Id为tree的Fancytree对象
$("#tree").fancytree("getTree")

//获取tree的根节点
$("#tree").fancytree("getRootNode")

//访问每个节点并把节点展开
$("#tree").fancytree("getRootNode").visit(function(node) {
                node.setExpanded(true);

     3)参考大牛:http://wwwendt.de/tech/fancytree/demo/

      官方文档下载:http://wwwendt.de/tech/fancytree/demo/

posted @ 2017-08-10 17:11  Andrew_wl  阅读(1869)  评论(0编辑  收藏  举报