bootstrap插件treeview实现全选父节点下所有子节点和反选功能
发布时间 - 2026-01-11 02:27:17 点击率:次项目需要实现权限管理,使用前端框架bootstrap,所以就直接选用了bootstrap的treeview扩展插件。先上图:
选中父节点时,父节点下所有子节点也都全部选中,看代码
1、HTML代码
<h2>TreeView Checkable</h2> <div id="treeview-checkable"></div>
2、Json数据
function getTvStateData() {
var defaultData = [
{
text: 'Parent 1',
href: '#parent1',
tags: ['4'],
state: {
checked: true
},
nodes: [
{
text: 'Child 1',
href: '#child1',
tags: ['2'],
nodes: [
{
text: 'Grandchild 1',
href: '#grandchild1',
tags: ['0']
},
{
text: 'Grandchild 2',
href: '#grandchild2',
tags: ['0']
}
]
},
{
text: 'Child 2',
href: '#child2',
tags: ['0']
}
]
},
{
text: 'Parent 2',
href: '#parent2',
tags: ['0'],
nodes: [
{
text: 'Child 1',
href: '#child1',
tags: ['2'],
nodes: [
{
text: 'Grandchild 1',
href: '#grandchild1',
tags: ['0']
},
{
text: 'Grandchild 2',
href: '#grandchild2',
tags: ['0']
}
]
},
{
text: 'Child 2',
href: '#child2',
tags: ['0']
}
]
},
{
text: 'Parent 3',
href: '#parent3'
},
{
text: 'Parent 4',
href: '#parent4',
tags: ['0']
},
{
text: 'Parent 5',
href: '#parent5',
tags: ['0']
}
];
return defaultData;
}
3、JS数据绑定,加载TreeView
$(function() {
var $checkableTree = $('#treeview-checkable')
.treeview({
data: getTvStateData(), //数据
showIcon: false,
showCheckbox: true,
levels: 1,
onNodeChecked: function(event, node) { //选中节点
var selectNodes = getChildNodeIdArr(node); //获取所有子节点
if (selectNodes) { //子节点不为空,则选中所有子节点
$('#treeview-checkable').treeview('checkNode', [selectNodes, { silent: true }]);
}
var parentNode = $("#treeview-checkable").treeview("getNode", node.parentId);
setParentNodeCheck(node);
},
onNodeUnchecked: function(event, node) { //取消选中节点
var selectNodes = getChildNodeIdArr(node); //获取所有子节点
if (selectNodes) { //子节点不为空,则取消选中所有子节点
$('#treeview-checkable').treeview('uncheckNode', [selectNodes, { silent: true }]);
}
},
onNodeExpanded:
function(event, data) {
if (data.nodes === undefined || data.nodes === null) {
} else if (data.tags[0] === "2") {
alert("Tags 2");
} else {
alert("1111");
}
}
});
});
4、选中/取消选中父节点时,选中/取消选中所有子节点,以及选中所有子节点时,选中父节点
function getChildNodeIdArr(node) {
var ts = [];
if (node.nodes) {
for (x in node.nodes) {
ts.push(node.nodes[x].nodeId);
if (node.nodes[x].nodes) {
var getNodeDieDai = getChildNodeIdArr(node.nodes[x]);
for (j in getNodeDieDai) {
ts.push(getNodeDieDai[j]);
}
}
}
} else {
ts.push(node.nodeId);
}
return ts;
}
function setParentNodeCheck(node) {
var parentNode = $("#treeview-checkable").treeview("getNode", node.parentId);
if (parentNode.nodes) {
var checkedCount = 0;
for (x in parentNode.nodes) {
if (parentNode.nodes[x].state.checked) {
checkedCount ++;
} else {
break;
}
}
if (checkedCount === parentNode.nodes.length) {
$("#treeview-checkable").treeview("checkNode", parentNode.nodeId);
setParentNodeCheck(parentNode);
}
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# bootstrap
# treeview
# 全选
# 反选
# bootstrap treeview 扩展addNode方法动态添加子节点的方法
# BootStrap TreeView使用实例详解
# JS树形菜单组件Bootstrap TreeView使用方法详解
# 浅析使用BootStrap TreeView插件实现灵活配置快递模板
# Bootstrap树形菜单插件TreeView.js使用方法详解
# 浅析BootStrap Treeview的简单使用
# 基于MVC5和Bootstrap的jQuery TreeView树形控件(二)之数据支持json字符
# 基于MVC5和Bootstrap的jQuery TreeView树形控件(一)之数据支持json字符
# bootstrap-treeview自定义双击事件实现方法
# bootstrap-Treeview实现级联勾选
# 为空
# 也都
# 绑定
# 大家多多
# 上图
# 加载
# href
# Parent
# text
# getTvStateData
# true
# defaultData
# var
# tags
# Child
# nodes
# Grandchild
# checked
# state
# brush
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
成都网站制作公司哪家好,四川省职工服务网是做什么用?
Laravel如何实现API版本控制_Laravel API版本化路由设计策略
如何彻底删除建站之星生成的Banner?
购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?
Laravel如何与Inertia.js和Vue/React构建现代单页应用
HTML 中动态设置元素 name 属性的正确语法详解
如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?
如何快速搭建自助建站会员专属系统?
佐糖AI抠图怎样调整抠图精度_佐糖AI精度调整与放大细化操作【攻略】
今日头条AI怎样推荐抢票工具_今日头条AI抢票工具推荐算法与筛选【技巧】
html5如何实现懒加载图片_ intersectionobserver api用法【教程】
PythonWeb开发入门教程_Flask快速构建Web应用
如何在 Telegram Web View(iOS)中防止键盘遮挡底部输入框
laravel怎么配置和使用PHP-FPM来优化性能_laravel PHP-FPM配置与性能优化方法
宙斯浏览器文件分类查看教程 快速筛选视频文档与图片方法
Laravel队列由Redis驱动怎么配置_Laravel Redis队列使用教程
怎么用AI帮你设计一套个性化的手机App图标?
如何自定义safari浏览器工具栏?个性化设置safari浏览器界面教程【技巧】
Laravel如何配置中间件Middleware_Laravel自定义中间件拦截请求与权限校验【步骤】
Laravel数据库迁移怎么用_Laravel Migration管理数据库结构的正确姿势
Laravel如何实现用户角色和权限系统_Laravel角色权限管理机制
长沙做网站要多少钱,长沙国安网络怎么样?
油猴 教程,油猴搜脚本为什么会网页无法显示?
长沙企业网站制作哪家好,长沙水业集团官方网站?
Laravel怎么判断请求类型_Laravel Request isMethod用法
微信小程序 scroll-view组件实现列表页实例代码
Javascript中的事件循环是如何工作的_如何利用Javascript事件循环优化异步代码?
Win11怎么设置默认图片查看器_Windows11照片应用关联设置
制作旅游网站html,怎样注册旅游网站?
胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?
详解Nginx + Tomcat 反向代理 如何在高效的在一台服务器部署多个站点
Windows家庭版如何开启组策略(gpedit.msc)?(安装方法)
详解Nginx + Tomcat 反向代理 负载均衡 集群 部署指南
Laravel怎么实现观察者模式Observer_Laravel模型事件监听与解耦开发【指南】
如何正确下载安装西数主机建站助手?
浅谈javascript alert和confirm的美化
今日头条微视频如何找选题 今日头条微视频找选题技巧【指南】
网站制作免费,什么网站能看正片电影?
Laravel Livewire是什么_使用Laravel Livewire构建动态前端界面
如何快速搭建高效简练网站?
如何在Tomcat中配置并部署网站项目?
简单实现jsp分页
Laravel怎么使用Markdown渲染文档_Laravel将Markdown内容转HTML页面展示【实战】
C++时间戳转换成日期时间的步骤和示例代码
Android GridView 滑动条设置一直显示状态(推荐)
Laravel如何配置和使用缓存?(Redis代码示例)
制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?
Laravel如何实现文件上传和存储?(本地与S3配置)
Laravel如何生成和使用数据填充?(Seeder和Factory示例)
微信公众帐号开发教程之图文消息全攻略

