php的treeview,bootstrap中插件treeview的介绍与使用

该博客介绍了如何在前端项目中利用Bootstrap的TreeView扩展插件进行权限管理。通过示例代码展示了当父节点被选中时,其所有子节点会自动被选中,以及在选中/取消选中节点时如何同步更新父节点的状态。此外,还提供了一个获取子节点ID数组和设置父节点检查状态的辅助函数。
摘要由CSDN通过智能技术生成

项目需要实现权限管理,使用前端框架bootstrap,所以就直接选用了bootstrap的treeview扩展插件。先上图:

57459f690eec88ee792c42589c0d3ece.png

选中父节点时,父节点下所有子节点也都全部选中,看代码

1、HTML代码

TreeView Checkable

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);

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值