当前位置:首页 > JavaScript

js tree实现

2026-03-14 10:18:13JavaScript

jsTree 基础实现

jsTree 是一个基于 jQuery 的交互式树形插件,用于展示层次结构数据。以下是基础实现步骤:

安装依赖 通过 npm 或直接引入 CDN 链接:

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jstree/3.2.1/themes/default/style.min.css" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jstree/3.2.1/jstree.min.js"></script>

HTML 容器

<div id="jstree_container"></div>

初始化基础树

$('#jstree_container').jstree({
    'core': {
        'data': [
            { "text": "Root node", "children": [
                { "text": "Child node 1" },
                { "text": "Child node 2" }
            ]}
        ]
    }
});

动态数据加载

通过 AJAX 加载远程数据:

$('#jstree_container').jstree({
    'core': {
        'data': {
            'url': '/api/tree_data',
            'dataType': 'json'
        }
    }
});

常用配置选项

多选模式

'checkbox': {
    'keep_selected_style': false,
    'three_state': false
}

节点图标自定义

'types': {
    'default': { 'icon': 'fa fa-folder' },
    'file': { 'icon': 'fa fa-file' }
}

事件处理

绑定节点选择事件

$('#jstree_container').on('changed.jstree', function(e, data) {
    console.log("Selected nodes: ", data.selected);
});

右键菜单示例

$('#jstree_container').jstree({
    'plugins': ['contextmenu'],
    'contextmenu': {
        'items': function(node) {
            return {
                'create': {
                    'label': 'Add Child',
                    'action': function() { /* 添加逻辑 */ }
                }
            };
        }
    }
});

实用方法

获取选中节点

var selected_nodes = $('#jstree_container').jstree('get_selected');

展开所有节点

$('#jstree_container').jstree('open_all');

主题定制

通过修改 CSS 覆盖默认样式:

.jstree-default .jstree-clicked {
    background: #e1e1e1;
    box-shadow: none;
}

性能优化

对于大型数据集启用懒加载:

'core': {
    'data': {
        'url': function(node) {
            return node.id === '#' ? '/api/roots' : '/api/children/' + node.id;
        }
    }
}

移动端适配

添加响应式 CSS 规则:

@media (max-width: 768px) {
    .jstree-container-ul { font-size: 14px; }
}

与框架集成

Vue 组件示例

js tree实现

export default {
    mounted() {
        $(this.$el).jstree({ /* 配置 */ });
    },
    beforeDestroy() {
        $(this.$el).jstree('destroy');
    }
}

标签: jstree
分享给朋友:

相关文章

js 实现继承

js 实现继承

原型链继承 通过让子类的原型对象指向父类的实例来实现继承。子类实例可以访问父类原型上的属性和方法。 function Parent() { this.name = 'parent'; } Par…

js实现pdf在线预览

js实现pdf在线预览

使用PDF.js实现PDF在线预览 PDF.js是由Mozilla开发的一个开源JavaScript库,可以在网页中直接渲染PDF文件。以下是实现PDF在线预览的步骤: 引入PDF.js库 在HT…

js实现dh

js实现dh

JavaScript 实现 DH(Diffie-Hellman)密钥交换 Diffie-Hellman(DH)密钥交换是一种安全协议,允许双方在不安全的通信信道上建立一个共享密钥。以下是如何在 Jav…

js实现上传图片

js实现上传图片

使用HTML5的File API实现图片上传 HTML5的File API允许通过JavaScript访问用户选择的文件。需要创建一个文件输入元素,并监听其change事件。 <input t…

js实现左右滑动

js实现左右滑动

实现左右滑动的 JavaScript 方法 监听触摸事件 通过 touchstart、touchmove 和 touchend 事件来检测用户的手势操作。记录触摸的起始位置和移动距离,判断滑动方向。…

jquery和js

jquery和js

jQuery与JavaScript的区别 jQuery是一个基于JavaScript的库,封装了许多常用的功能,简化了DOM操作、事件处理、动画效果等。JavaScript是原生语言,功能更全面但代码…