bootstrap插件treeview實現全選父節(jié)點下所有子節(jié)點和反選功能
更新時間:2017年07月21日 15:39:28 作者:Rain
這篇文章主要為大家詳細介紹了bootstrap插件treeview實現全選父節(jié)點下所有子節(jié)點、反選功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
項目需要實現權限管理,使用前端框架bootstrap,所以就直接選用了bootstrap的treeview擴展插件。先上圖:

選中父節(jié)點時,父節(jié)點下所有子節(jié)點也都全部選中,看代碼
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) { //選中節(jié)點
var selectNodes = getChildNodeIdArr(node); //獲取所有子節(jié)點
if (selectNodes) { //子節(jié)點不為空,則選中所有子節(jié)點
$('#treeview-checkable').treeview('checkNode', [selectNodes, { silent: true }]);
}
var parentNode = $("#treeview-checkable").treeview("getNode", node.parentId);
setParentNodeCheck(node);
},
onNodeUnchecked: function(event, node) { //取消選中節(jié)點
var selectNodes = getChildNodeIdArr(node); //獲取所有子節(jié)點
if (selectNodes) { //子節(jié)點不為空,則取消選中所有子節(jié)點
$('#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、選中/取消選中父節(jié)點時,選中/取消選中所有子節(jié)點,以及選中所有子節(jié)點時,選中父節(jié)點
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 擴展addNode方法動態(tài)添加子節(jié)點的方法
- BootStrap TreeView使用實例詳解
- JS樹形菜單組件Bootstrap TreeView使用方法詳解
- 淺析使用BootStrap TreeView插件實現靈活配置快遞模板
- Bootstrap樹形菜單插件TreeView.js使用方法詳解
- 淺析BootStrap Treeview的簡單使用
- 基于MVC5和Bootstrap的jQuery TreeView樹形控件(二)之數據支持json字符串、list集合
- 基于MVC5和Bootstrap的jQuery TreeView樹形控件(一)之數據支持json字符串、list集合
- bootstrap-treeview自定義雙擊事件實現方法
- bootstrap-Treeview實現級聯勾選
相關文章
Json對象和字符串互相轉換json數據拼接和JSON使用方式詳細介紹(小結)
JSON(JavaScript Object Notation) 是一種輕量級的數據交換格式.這篇文章主要介紹了Json對象和字符串互相轉換json數據拼接和JSON使用方式詳細介紹(小結)的相關資料,需要的朋友可以參考下2016-10-10
用js控件div的滾動條,讓它在內容更新時自動滾到底部的實現方法
下面小編就為大家?guī)硪黄胘s控件div的滾動條,讓它在內容更新時自動滾到底部的實現方法。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-10-10

