jquery中EasyUI实现同步树

实现同步树需借助EasyUI Tree组件的loadFilter属性与远程数据源,以下是详细的攻略:

步骤一:引入依赖

在页面中引入jQuery、jQuery EasyUI和所需的主题样式:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>jQuery EasyUI同步树</title>
    <link rel="stylesheet" type="text/css" href="https://cdn.bootcdn.net/ajax/libs/jquery/1.10.2/jquery.min.js">
    <link rel="stylesheet" type="text/css" href="https://cdn.bootcdn.net/ajax/libs/jquery-easyui/1.10.5/themes/bootstrap/easyui.css">
    <link rel="stylesheet" type="text/css" href="https://cdn.bootcdn.net/ajax/libs/jquery-easyui/1.10.5/themes/icon.css">
    <script type="text/javascript" src="https://cdn.bootcdn.net/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
    <script type="text/javascript" src="https://cdn.bootcdn.net/ajax/libs/jquery-easyui/1.10.5/jquery.easyui.min.js"></script>
</head>
<body>
    <div id="tt"></div>
</body>
</html>

步骤二:书写远程数据源

定义一个名为"data.json"的Json文件,并书写数据源,如下所示:

[
    {
        "id": 1,
        "text": "节点1",
        "parentId": null
    },
    {
        "id": 2,
        "text": "节点2",
        "parentId": null
    },
    {
        "id": 3,
        "text": "节点1-1",
        "parentId": 1
    },
    {
        "id": 4,
        "text": "节点1-2",
        "parentId": 1
    },
    {
        "id": 5,
        "text": "节点2-1",
        "parentId": 2
    },
    {
        "id": 6,
        "text": "节点2-2",
        "parentId": 2
    }
]

步骤三:加载数据

在EasyUI Tree组件中使用loadFilter属性进行数据处理,并通过url属性加载远程数据:

$('#tt').tree({
    url: 'data.json',
    method: 'get',
    loadFilter: function(data, parent){
        var opt = $(this).data().tree.options;
        var idField, textField, parentField;
        if (opt.parentField){
            idField = opt.idField || 'id';
            textField = opt.textField || 'text';
            parentField = opt.parentField;
            for(var i =0;i<data.length;i++){
                data[i].id = data[i][idField];
                data[i].text = data[i][textField];
                if (data[i][parentField]){
                    data[i]['_parentId'] = data[i][parentField];
                }
            }
            var treeData = [];
            for(var i=0;i<data.length;i++){
                var parentId = data[i]['_parentId'];
                if (!parentId){
                    treeData.push(data[i]);
                } else {
                    var parent = findParent(treeData,parentId);
                    if (parent.children){
                        parent.children.push(data[i]);
                    } else {
                        parent.children = [data[i]];
                    }
                }
            }
            return treeData;
        }
        return data;

        function findParent(data,parentId){
            for(var i=0;i<data.length;i++){
                if (data[i].id == parentId){
                    return data[i];
                } else if (data[i].children){
                    var res = findParent(data[i].children,parentId);
                    if (res){
                        return res;
                    }
                }
            }
            return null;
        }
    },
    animate: true,
    lines: true,
    dnd: true,
    onClick: function(node){
        console.log(node);
    }
})

示例一:基础同步树

在页面上实现一个基础的同步树,基础版同步树如下:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>jQuery EasyUI同步树</title>
    <link rel="stylesheet" type="text/css" href="https://cdn.bootcdn.net/ajax/libs/jquery/1.10.2/jquery.min.js">
    <link rel="stylesheet" type="text/css" href="https://cdn.bootcdn.net/ajax/libs/jquery-easyui/1.10.5/themes/bootstrap/easyui.css">
    <link rel="stylesheet" type="text/css" href="https://cdn.bootcdn.net/ajax/libs/jquery-easyui/1.10.5/themes/icon.css">
    <script type="text/javascript" src="https://cdn.bootcdn.net/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
    <script type="text/javascript" src="https://cdn.bootcdn.net/ajax/libs/jquery-easyui/1.10.5/jquery.easyui.min.js"></script>
</head>
<body>
    <div id="tt"></div>
    <script type="text/javascript">
        $('#tt').tree({
            url: 'data.json',
            method: 'get',
            loadFilter: function(data, parent){
                var opt = $(this).data().tree.options;
                var idField, textField, parentField;
                if (opt.parentField){
                    idField = opt.idField || 'id';
                    textField = opt.textField || 'text';
                    parentField = opt.parentField;
                    for(var i =0;i<data.length;i++){
                        data[i].id = data[i][idField];
                        data[i].text = data[i][textField];
                        if (data[i][parentField]){
                            data[i]['_parentId'] = data[i][parentField];
                        }
                    }
                    var treeData = [];
                    for(var i=0;i<data.length;i++){
                        var parentId = data[i]['_parentId'];
                        if (!parentId){
                            treeData.push(data[i]);
                        } else {
                            var parent = findParent(treeData,parentId);
                            if (parent.children){
                                parent.children.push(data[i]);
                            } else {
                                parent.children = [data[i]];
                            }
                        }
                    }
                    return treeData;
                }
                return data;

                function findParent(data,parentId){
                    for(var i=0;i<data.length;i++){
                        if (data[i].id == parentId){
                            return data[i];
                        } else if (data[i].children){
                            var res = findParent(data[i].children,parentId);
                            if (res){
                                return res;
                            }
                        }
                    }
                    return null;
                }
            },
            animate: true,
            lines: true,
            dnd: true,
            onClick: function(node){
                console.log(node);
            }
        })
    </script>
</body>
</html>

示例二:多级同步树

在基础同步树之上,增加多层级的子树,可以通过在数据源中定义“parentId”属性实现:

[
    {
        "id": 1,
        "text": "节点1",
        "parentId": null
    },
    {
        "id": 2,
        "text": "节点2",
        "parentId": null
    },
    {
        "id": 3,
        "text": "节点1-1",
        "parentId": 1
    },
    {
        "id": 4,
        "text": "节点1-2",
        "parentId": 1
    },
    {
        "id": 5,
        "text": "节点2-1",
        "parentId": 2
    },
    {
        "id": 6,
        "text": "节点2-2",
        "parentId": 2
    },
    {
        "id": 7,
        "text": "节点1-1-1",
        "parentId": 3
    },
    {
        "id": 8,
        "text": "节点1-1-2",
        "parentId": 3
    }
]

多层级同步树如下:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>jQuery EasyUI同步树</title>
    <link rel="stylesheet" type="text/css" href="https://cdn.bootcdn.net/ajax/libs/jquery/1.10.2/jquery.min.js">
    <link rel="stylesheet" type="text/css" href="https://cdn.bootcdn.net/ajax/libs/jquery-easyui/1.10.5/themes/bootstrap/easyui.css">
    <link rel="stylesheet" type="text/css" href="https://cdn.bootcdn.net/ajax/libs/jquery-easyui/1.10.5/themes/icon.css">
    <script type="text/javascript" src="https://cdn.bootcdn.net/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
    <script type="text/javascript" src="https://cdn.bootcdn.net/ajax/libs/jquery-easyui/1.10.5/jquery.easyui.min.js"></script>
</head>
<body>
    <div id="tt"></div>
    <script type="text/javascript">
        $('#tt').tree({
            url: 'data.json',
            method: 'get',
            loadFilter: function(data, parent){
                var opt = $(this).data().tree.options;
                var idField, textField, parentField;
                if (opt.parentField){
                    idField = opt.idField || 'id';
                    textField = opt.textField || 'text';
                    parentField = opt.parentField;
                    for(var i =0;i<data.length;i++){
                        data[i].id = data[i][idField];
                        data[i].text = data[i][textField];
                        if (data[i][parentField]){
                            data[i]['_parentId'] = data[i][parentField];
                        }
                    }
                    var treeData = [];
                    for(var i=0;i<data.length;i++){
                        var parentId = data[i]['_parentId'];
                        if (!parentId){
                            treeData.push(data[i]);
                        } else {
                            var parent = findParent(treeData,parentId);
                            if (parent.children){
                                parent.children.push(data[i]);
                            } else {
                                parent.children = [data[i]];
                            }
                        }
                    }
                    return treeData;
                }
                return data;

                function findParent(data,parentId){
                    for(var i=0;i<data.length;i++){
                        if (data[i].id == parentId){
                            return data[i];
                        } else if (data[i].children){
                            var res = findParent(data[i].children,parentId);
                            if (res){
                                return res;
                            }
                        }
                    }
                    return null;
                }
            },
            animate: true,
            lines: true,
            dnd: true,
            onClick: function(node){
                console.log(node);
            }
        })
    </script>
</body>
</html>

以上是jquery中EasyUI实现同步树的完整攻略,两个示例均实现简单同步树和多级同步树。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:jquery中EasyUI实现同步树 - Python技术站

(0)
上一篇 2023年5月28日
下一篇 2023年5月28日

相关文章

  • jQuery删除节点的三个方法即remove()detach()和empty()

    当开发使用jQuery的时候,删除某一个DOM节点是非常常见的操作。而要删除一个DOM节点,jQuery提供了三个方法remove(),detach(),和empty(),分别用于删除节点本身,删除节点及所有子节点,并保留该节点在内存中的数据,以及删除节点的所有子节点。 1. remove() .remove()方法是jQuery的核心方法之一,它会将匹配元…

    jquery 2023年5月28日
    00
  • 如何使用jQuery Mobile制作一个禁用按钮

    以下是使用jQuery Mobile制作一个禁用按钮的完整攻略: 首先,在HTML文件中引入jQuery Mobile库。可以以下代码实现: <head> <meta name="viewport" content="width=device, initial-scale=1"> <tit…

    jquery 2023年5月11日
    00
  • jQuery table2excel 插件

    下面是关于“jQuery table2excel 插件”的详细讲解和两个示例说明。 什么是 jQuery table2excel 插件? jQuery table2excel 插件是一个基于 jQuery 的插件,用于在前端将一个 HTML 表格导出为 Excel 文件。它是一个出色的解决方案,可以使用户直接在浏览器中实现数据的导出,方便用户对数据进行保存或…

    jquery 2023年5月13日
    00
  • jQWidgets jqxNavBar选择属性

    以下是关于 jQWidgets jqxNavBar 组件中选择属性的详细攻略。 jQWidgets jqxNavBar 选择属性 jQWidgets jqxNavBar 组件的选择属性用于设置导航栏中的项是否可以被选择。该属性可以是布尔值,可选值为 true 或 false。 语法 $(‘#navbar’).jqxNavBar({ selection: va…

    jquery 2023年5月12日
    00
  • firefox浏览器firebug插件调试js(jqueryt)程序(firefox调试js)

    Firefox浏览器Firebug插件调试JS(JQuery)程序 什么是Firebug插件? Firebug插件是一款浏览器调试工具,它能帮助开发者追踪并调试网站中发生的各种问题。Firebug的一些主要功能包括: HTML和CSS编辑器,可以实时地对代码进行修改并查看更改后的效果; JavaScript调试器,可以对代码进行单步调试、查看变量和监控函数执…

    jquery 2023年5月28日
    00
  • jQWidgets jqxDateTimeInput值属性

    以下是关于“jQWidgets jqxDateTimeInput值属性”的完整攻略,包含两个示例说明: 属性简介 val 属性是 jQWidgets jqxDateTimeInput 控件的一个属性,用于获取或设置日期时间输入框的值。该属性的语法如下: // 获取日期时间输入框的值 var value = $("#jqxDateTimeInput&…

    jquery 2023年5月10日
    00
  • jQWidgets jqxTreeGrid clearFilters()方法

    以下是关于 jQWidgets jqxTreeGrid 的 clearFilters() 方法的完整攻略: jQWidgets jqxTreeGrid clearFilters() 方法 clearFilters() 方法用于清除 jqxTreeGrid 组件中的所有筛选器。该方法会将所有列筛选器条件清空,并重新加载数据源。 语法 $(‘#jqxTreeGr…

    jquery 2023年5月11日
    00
  • Java中Spring WebSocket详解

    Java中Spring WebSocket详解 WebSockets是一种全双工、持久性的协议,能够在浏览器和服务器之间创建一个互动会话。Spring WebSocket简化了在Spring应用程序中使用WebSockets的流程。 使用Spring WebSocket 以下是使用Spring WebSocket的步骤: 在pom.xml文件中添加sprin…

    jquery 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部