您好,登錄后才能下訂單哦!
本文實例為大家分享了bootstrap Treeview實現級聯勾選的具體代碼,供大家參考,具體內容如下
核心方法
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]); } } }
6-27 : 經部分網友反饋,圖中的 if(!("id" in perentNode)) 需要改成 if(!("nodeId" in perentNode))才能正常運行,我想應該是版本問題,上面代碼中已經改正了。如果運行不了,請改回 if(!("id" in perentNode))試一下。(謝謝大家提出)
因為treeview中silent屬性指定了無效(我也不知道為什么委屈),所以多加了兩個變量來控制
$('#searchTree').treeview({ showCheckbox:true, data:treeData, onNodeChecked:nodeChecked , onNodeUnchecked:nodeUnchecked });
效果圖:
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。