bootstrap treeview 树形菜单带复选框及级联选择功能
更新时间:2018年06月08日 08:51:26 作者:小角色Byme
这篇文章主要介绍了bootstrap treeview 树形菜单带复选框及级联选择功能,代码超简单,感兴趣的朋友跟随脚本之家小编一起学习吧
具体代码如下所示:
<div id="searchTree"></div> <script> var treeData = [{ text: "Parent 1", nodes: [{ text: "Child 1", nodes: [{ text: "Grandchild 1" }, { text: "Grandchild 2", nodes: [{ text: "Grandchild 2-1", nodes: [{ text: "Grandchild 2-1-1" }, { text: "Grandchild 2-2-1", }] }, { text: "Grandchild 1-2", }] }] }, { text: "Child 2", nodes: [{ text: "Grandchild 2-1" }, { text: "Grandchild 2-2", }] }] }, { text: "Parent 2", id:'11111' }, { text: "Parent 3" }, { text: "Parent 4" }, { text: "Parent 5" }]; var nodeCheckedSilent = false; function nodeChecked(event, node) { if (nodeCheckedSilent) { return; } nodeCheckedSilent = true; checkAllParent(node); checkAllSon(node); nodeCheckedSilent = false; } var nodeUncheckedSilent = false; function nodeUnchecked(event, node) { if (nodeUncheckedSilent) return; nodeUncheckedSilent = true; uncheckAllParent(node); uncheckAllSon(node); nodeUncheckedSilent = false; } //选中全部父节点 function checkAllParent(node) { $('#searchTree').treeview('checkNode', node.nodeId, { silent: true }); var parentNode = $('#searchTree').treeview('getParent', node.nodeId); if (!("nodeId" in parentNode)) { return; } else { checkAllParent(parentNode); } } //取消全部父节点 function uncheckAllParent(node) { $('#searchTree').treeview('uncheckNode', node.nodeId, { silent: true }); var siblings = $('#searchTree').treeview('getSiblings', node.nodeId); var parentNode = $('#searchTree').treeview('getParent', node.nodeId); if (!("nodeId" in parentNode)) { return; } var isAllUnchecked = true; //是否全部没选中 for (var i in siblings) { if (siblings[i].state.checked) { isAllUnchecked = false; break; } } if (isAllUnchecked) { uncheckAllParent(parentNode); } } //级联选中所有子节点 function checkAllSon(node) { $('#searchTree').treeview('checkNode', node.nodeId, { silent: true }); if (node.nodes != null && node.nodes.length > 0) { for (var i in node.nodes) { checkAllSon(node.nodes[i]); } } } //级联取消所有子节点 function uncheckAllSon(node) { $('#searchTree').treeview('uncheckNode', node.nodeId, { silent: true }); if (node.nodes != null && node.nodes.length > 0) { for (var i in node.nodes) { uncheckAllSon(node.nodes[i]); } } } $('#searchTree').treeview({ showCheckbox: true, data: treeData, onNodeChecked: nodeChecked, onNodeUnchecked: nodeUnchecked }); </script>
bootstrap treeview 树形菜单带复选框及级联选择功能_javascript技巧_脚本之家 (jb51.net)
上面的有些bug,需要修改一下:
//以下是级联复选框的内容 this.nodeChecked = function (event, node) { if (that.nodeCheckedSilent) { return; } that.nodeCheckedSilent = true; that.checkAllParent(node); that.checkAllSon(node); that.nodeCheckedSilent = false; } this.nodeUnchecked = function (event, node) { if (that.nodeUncheckedSilent) return; that.nodeUncheckedSilent = true; that.uncheckAllParent(node); that.uncheckAllSon(node); that.nodeUncheckedSilent = false; } //选中全部父节点 this.checkAllParent = function (node) { if (node == null || node.state == undefined || node.state.checked == undefined) { return; } that.tree.treeview('checkNode', node.nodeId, { silent: true }); var parentNode = that.tree.treeview('getParent', node.nodeId); if (!("nodeId" in parentNode)) { return; } else { that.checkAllParent(parentNode); } } //取消全部父节点 this.uncheckAllParent = function (node) { if (node == null || node.state == undefined || node.state.checked == undefined) { return; } that.tree.treeview('uncheckNode', node.nodeId, { silent: true }); var siblings = that.tree.treeview('getSiblings', node.nodeId); var parentNode = that.tree.treeview('getParent', node.nodeId); if (!("nodeId" in parentNode)) { return; } var isAllUnchecked = true; //是否全部没选中 for (var i in siblings) { if (siblings[i] != undefined && siblings[i].state != undefined && siblings[i].state.checked) { isAllUnchecked = false; break; } } if (isAllUnchecked) { that.uncheckAllParent(parentNode); } } //级联选中所有子节点 this.checkAllSon = function (node) { if (node == null || node.state == undefined || node.state.checked == undefined) { return; } that.tree.treeview('checkNode', node.nodeId, { silent: true }); if (node.nodes != null && node.nodes.length > 0) { for (var i in node.nodes) { that.checkAllSon(node.nodes[i]); } } } //级联取消所有子节点 this.uncheckAllSon = function (node) { if (node == null || node.state == undefined || node.state.checked == undefined) { return; } that.tree.treeview('uncheckNode', node.nodeId, { silent: true }); if (node.nodes != null && node.nodes.length > 0) { for (var i in node.nodes) { that.uncheckAllSon(node.nodes[i]); } } }
浙公网安备 33010602011771号