BootStrap Jstree 树形菜单的增删改查的实现源码

下面是 BootStrap Jstree 树形菜单的增删改查的实现源码的完整攻略。

前置知识

在学习本篇攻略之前,需要对以下知识有所了解:

  • HTML、CSS、JavaScript 的基本语法和使用
  • jQuery 和 Bootstrap 框架的基本使用
  • jstree 树形菜单插件的基本使用

环境搭建

首先,需要在你的项目中引入以下依赖:

<link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css">
<link rel="stylesheet" href="https://cdn.bootcss.com/jstree/3.3.7/themes/default/style.min.css">

<script src="https://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
<script src="https://cdn.bootcss.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<script src="https://cdn.bootcss.com/jstree/3.3.7/jstree.min.js"></script>

实现增、删、改、查

初始化树形菜单

首先,需要将 jstree 插件绑定到一个 HTML 元素上,即可得到初始化后的树形菜单:

<div id="demo"></div>

<script>
$("#demo").jstree({
    'core': {
        'data': [
            {
                'text': 'Folder 1',
                'state': { 'opened': true },
                'children': [
                    { 'text': 'Subfolder 1', 'icon': 'glyphicon glyphicon-folder-open' },
                    { 'text': 'Subfolder 2', 'icon': 'glyphicon glyphicon-folder-open' }
                ]
            },
            {
                'text': 'Folder 2',
                'state': { 'opened': true },
                'children': [
                    { 'text': 'Subfolder 3', 'icon': 'glyphicon glyphicon-folder-open' },
                    { 'text': 'Subfolder 4', 'icon': 'glyphicon glyphicon-folder-open' }
                ]
            }
        ]
    },
    'plugins': ['contextmenu']
});

// 添加右键菜单
$("#demo").on('select_node.jstree', function (e, data) {
    $("#demo").jstree('show_contextmenu', data.node);
});
</script>

增加节点

要在 jstree 中增加节点,需要调用 jstree 提供的 create_node 方法:

$('#demo').jstree('create_node', $('#nodeId'), {
    text: 'New Node',
});

其中,create_node 方法的第一个参数是一个 jQuery 对象,表示新增节点要插入到哪个节点下;第二个参数是一个对象,表示新增节点的配置信息,其中 text 属性表示节点显示的文本值。

获取节点

可以通过以下两种方法获取 jstree 中的节点:

// 通过 ID 获取节点
const node = $('#demo').jstree('get_node', '节点 ID');

// 获取所有节点
const nodes = $('#demo').jstree('get_json', -1);

其中,get_node 方法的第二个参数是节点的 ID,表示要获取哪个节点的信息。get_json 方法的第二个参数是根节点的 ID,如果传入 -1,则表示获取根节点下的所有节点信息。

更新节点

要更新 jstree 中的节点,需要调用 jstree 提供的 rename_node 方法:

$('#demo').jstree('rename_node', $('#nodeId'), 'New Node Text');

其中,rename_node 方法的第一个参数是一个 jQuery 对象,表示要更新的节点;第二个参数是新的节点文本值。

删除节点

要删除 jstree 中的节点,需要调用 jstree 提供的 delete_node 方法:

$('#demo').jstree('delete_node', $('#nodeId'));

其中,delete_node 方法的第二个参数是一个 jQuery 对象,表示要删除的节点。

示例说明

示例一:树形菜单添加父节点和子节点

下面是一个树形菜单添加父节点和子节点的示例:

<div id="demo"></div>

<script>
const treeData = [
    {
        'text': 'Folder 1',
        'state': { 'opened': true },
        'children': [
            { 'text': 'Subfolder 1', 'icon': 'glyphicon glyphicon-folder-open' },
            { 'text': 'Subfolder 2', 'icon': 'glyphicon glyphicon-folder-open' }
        ]
    },
    {
        'text': 'Folder 2',
        'state': { 'opened': true },
        'children': [
            { 'text': 'Subfolder 3', 'icon': 'glyphicon glyphicon-folder-open' },
            { 'text': 'Subfolder 4', 'icon': 'glyphicon glyphicon-folder-open' }
        ]
    }
];

$("#demo").jstree({
    'core': {
        'data': treeData
    },
    'plugins': ['contextmenu']
});

// 添加右键菜单
$("#demo").on('select_node.jstree', function (e, data) {
    $("#demo").jstree('show_contextmenu', data.node);
});

// 添加父节点
$('#addParentNode').on('click', function () {
    const tree = $('#demo').jstree(true);
    const newNode = { 'text': 'New Parent' };
    const selectedNode = tree.get_selected();
    const parentNode = selectedNode.length > 0 ? selectedNode[0] : '#';
    tree.create_node(parentNode, newNode, "first");
});

// 添加子节点
$('#addChildNode').on('click', function () {
    const tree = $('#demo').jstree(true);
    const newNode = { 'text': 'New Child' };
    const selectedNode = tree.get_selected();
    const parentNode = selectedNode.length > 0 ? selectedNode[0] : '#';
    tree.create_node(parentNode, newNode, "last");
});
</script>

<button id="addParentNode" class="btn btn-default">添加父节点</button>
<button id="addChildNode" class="btn btn-default">添加子节点</button>

示例二:树形菜单编辑节点和删除节点

下面是一个树形菜单编辑节点和删除节点的示例:

<div id="demo"></div>

<script>
const treeData = [
    {
        'id': '1',
        'text': 'Folder 1',
        'state': { 'opened': true },
        'children': [
            { 'id': '2', 'text': 'Subfolder 1', 'icon': 'glyphicon glyphicon-folder-open' },
            { 'id': '3', 'text': 'Subfolder 2', 'icon': 'glyphicon glyphicon-folder-open' }
        ]
    },
    {
        'id': '4',
        'text': 'Folder 2',
        'state': { 'opened': true },
        'children': [
            { 'id': '5', 'text': 'Subfolder 3', 'icon': 'glyphicon glyphicon-folder-open' },
            { 'id': '6', 'text': 'Subfolder 4', 'icon': 'glyphicon glyphicon-folder-open' }
        ]
    }
];

$("#demo").jstree({
    'core': {
        'data': treeData
    },
    'plugins': ['contextmenu']
});

// 添加右键菜单
$("#demo").on('select_node.jstree', function (e, data) {
    $("#demo").jstree('show_contextmenu', data.node);
});

// 编辑节点
$('#editNode').on('click', function () {
    const tree = $('#demo').jstree(true);
    const selectedNode = tree.get_selected();
    const node = tree.get_node(selectedNode);
    tree.edit(node);
});

// 删除节点
$('#deleteNode').on('click', function () {
    const tree = $('#demo').jstree(true);
    const selectedNode = tree.get_selected();
    const node = tree.get_node(selectedNode);
    tree.delete_node(node);
});
</script>

<button id="editNode" class="btn btn-default">编辑节点</button>
<button id="deleteNode" class="btn btn-default">删除节点</button>

结语

以上就是 BootStrap Jstree 树形菜单增删改查的实现源码的完整攻略,希望对大家有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:BootStrap Jstree 树形菜单的增删改查的实现源码 - Python技术站

(0)
上一篇 2023年6月8日
下一篇 2023年6月8日

相关文章

  • 安装@vue/cli报错npmERR gyp ERR问题及解决

    当我们在安装@vue/cli时,可能会遇到以下报错信息: npm ERR! gyp ERR! build error npm ERR! gyp ERR! stack Error: make failed with exit code: 2 npm ERR! gyp ERR! stack at ChildProcess.onExit (/usr/local/l…

    node js 2023年6月8日
    00
  • CocosCreator经典入门项目之flappybird

    CocosCreator是一款面向多平台的游戏开发引擎,通过它可以快速构建游戏项目并发布到多个平台上。而flappybird则是CocosCreator的一个经典入门项目,下面将详细讲解如何完成flappybird项目。 项目准备 首先需要确保已经安装了CocosCreator,并创建了一个新项目。在新项目中,需要先下载flappybird的素材,我们可以在…

    node js 2023年6月8日
    00
  • Node.js项目中调用JavaScript的EJS模板库的方法

    下面是关于Node.js项目中调用JavaScript的EJS模板库的方法的完整攻略。 EJS模板库 在开始之前,首先需要了解一下EJS模板库,它是一个使用JavaScript模版引擎库,基于Node.js平台上的高效、灵活和易于使用的模板引擎。EJS允许动态生成HTML、XML、JSON等文件,以及将数据注入到模板中。这使得EJS成为Node.js中实现视…

    node js 2023年6月8日
    00
  • node版本快速切换及管理方法

    当需要在Node.js的不同版本之间切换时,我们可以使用Node Version Manager (nvm)。下面介绍如何使用nvm快速切换和管理不同版本的Node.js。 安装nvm 首先需要安装nvm。可以使用以下命令在Linux或macOS上安装nvm: curl -o- https://raw.githubusercontent.com/nvm-sh…

    node js 2023年6月8日
    00
  • node.js入门学习之url模块

    Node.js入门学习之url模块 什么是url模块? url模块是Node.js标准库中的一个模块,主要用于处理和解析URL地址。 如何使用url模块? 要使用url模块,首先需要使用require方法引入: const url = require(‘url’); 然后就可以使用url模块提供的方法了。 url.parse方法 url.parse()方法用…

    node js 2023年6月8日
    00
  • golang执行命令操作 exec.Command

    关于golang中执行命令操作exec.Command的攻略,我可以提供以下的详细讲解。 1. 执行命令 首先,我们需要导入Go的os/exec包。然后,就可以使用Command函数执行命令。它接受一个字符串参数,这个字符串包含了要执行的命令及其参数。 package main import ( "fmt" "os/exec&q…

    node js 2023年6月8日
    00
  • nodejs开发微博实例

    下面是使用nodejs开发微博实例的完整攻略: 1. 概述 本攻略主要介绍如何使用nodejs进行微博开发的过程,包括前后端的架构、功能的实现、数据存储等方面。 2. 前后端架构 前端使用Vue.js框架实现,后端使用node.js搭建,并使用express框架处理路由、数据存储等功能。使用MySQL数据库存储用户信息、微博内容等数据。 3. 功能实现 3.…

    node js 2023年6月8日
    00
  • 详解如何使用node.js的开发框架express创建一个web应用

    使用Node.js的开发框架Express创建Web应用,可以帮助我们快速搭建出一个具备完整功能的Web应用程序。以下是使用Express创建Web应用的攻略: 1. 安装Express 在终端输入以下命令来安装Express: npm install –save express 2. 创建应用 我们可以通过以下代码来创建一个Express应用: cons…

    node js 2023年6月8日
    00
合作推广
合作推广
分享本页
返回顶部