当前位置:首页 > JavaScript

js 实现jtree

2026-02-01 00:25:43JavaScript

实现 JTree 的 JavaScript 方法

在 JavaScript 中实现类似 JTree(树形结构展示)的功能,可以通过原生 JavaScript 或第三方库完成。以下是几种常见实现方式:

原生 JavaScript 实现

使用 HTML 和 CSS 结合 JavaScript 动态生成树形结构:

<div id="tree"></div>
const treeData = [
  {
    text: 'Parent 1',
    children: [
      { text: 'Child 1' },
      { 
        text: 'Child 2',
        children: [
          { text: 'Grandchild 1' }
        ]
      }
    ]
  }
];

function createTree(element, data) {
  const ul = document.createElement('ul');
  data.forEach(item => {
    const li = document.createElement('li');
    li.textContent = item.text;
    if (item.children) {
      createTree(li, item.children);
    }
    ul.appendChild(li);
  });
  element.appendChild(ul);
}

createTree(document.getElementById('tree'), treeData);

使用 jQuery 插件

jQuery 的 jstree 插件是常用解决方案:

<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/jstree/3.2.1/jstree.min.js"></script>

<div id="jstree"></div>
$('#jstree').jstree({
  'core': {
    'data': [
      { 
        'text': 'Root',
        'children': [
          { 'text': 'Child 1' },
          { 'text': 'Child 2' }
        ]
      }
    ]
  }
});

使用 Vue/React 组件

Vue 示例(使用 vue-jstree):

js 实现jtree

import VJstree from 'vue-jstree'

new Vue({
  components: { VJstree },
  data() {
    return {
      treeData: [
        {
          text: 'Node 1',
          children: [
            { text: 'Child 1' }
          ]
        }
      ]
    }
  }
})

React 示例(使用 react-jstree):

import Tree from 'react-jstree'

function App() {
  const treeData = {
    core: {
      data: [
        { text: 'Root', children: [
          { text: 'Child' }
        ]}
      ]
    }
  };
  return <Tree data={treeData} />;
}

树形结构 CSS 样式

对于原生实现,需添加基础样式:

js 实现jtree

ul.tree, ul.tree ul {
  list-style: none;
  margin: 0;
  padding-left: 20px;
}
ul.tree li {
  position: relative;
}
ul.tree li:before {
  content: "";
  position: absolute;
  left: -15px;
  border-left: 1px solid #ccc;
  height: 100%;
}

交互功能增强

添加展开/折叠功能:

document.querySelectorAll('#tree li').forEach(li => {
  if (li.querySelector('ul')) {
    li.classList.add('collapsed');
    li.addEventListener('click', e => {
      e.stopPropagation();
      li.classList.toggle('collapsed');
    });
  }
});

配套 CSS:

li.collapsed > ul {
  display: none;
}
li:before {
  top: 0;
  width: 10px;
}

性能优化建议

对于大型树结构,建议:

  • 实现懒加载(动态加载子节点)
  • 使用虚拟滚动(如 react-window)
  • 避免深层嵌套(超过5层建议分页)

以上方法可根据具体需求选择,第三方库通常提供更完整的 API(如节点选择、拖拽等功能)。

标签: jsjtree
分享给朋友:

相关文章

js实现拖拽

js实现拖拽

实现拖拽的基本步骤 使用JavaScript实现拖拽功能需要监听鼠标事件,包括mousedown、mousemove和mouseup。以下是实现的基本逻辑: const draggableElem…

vue.js实现轮播

vue.js实现轮播

Vue.js 实现轮播功能 使用第三方库(推荐) Vue.js 生态中有许多成熟的轮播组件库,例如 vue-awesome-swiper 或 swiper,它们功能丰富且易于集成。 安装 swip…

js实现跳转

js实现跳转

使用 window.location 跳转 通过修改 window.location.href 实现页面跳转,这是最常用的方法。 window.location.href = 'https:/…

js实现打印

js实现打印

使用window.print()方法实现打印 在JavaScript中,可以通过调用window.print()方法直接触发浏览器的打印功能。这会打开系统的打印对话框,用户可以选择打印机和设置打印选项…

js 实现倒计时

js 实现倒计时

实现倒计时的基本方法 使用 JavaScript 实现倒计时可以通过 setInterval 或 setTimeout 结合日期计算来完成。以下是两种常见实现方式。 使用 setInterval 实…

js实现图片放大缩小

js实现图片放大缩小

实现图片放大缩小的基础方法 使用CSS的transform: scale()属性可以快速实现图片的放大缩小效果。通过JavaScript动态修改该属性值: const img = document…