zTree 提供 checkAllNodes 方法,配合雙擊事件可實現父節點雙擊全選子節點。
var setting = {
callback: {
onDblClick: function(event, treeId, treeNode) {
var zTree = $.fn.zTree.getZTreeObj(treeId);
if (treeNode.children && treeNode.children.length > 0) {
// 獲取所有後代節點
var nodes = zTree.transformToArray(treeNode);
// 統一勾選
zTree.checkAllNodes(true); // 或遍歷 nodes 逐個 setChkDisabled/setChecked
// 更精確:僅勾選該節點及其子孫
nodes.forEach(function(n) { zTree.checkNode(n, true, true); });
}
}
}
};
$.fn.zTree.init($("#tree"), setting, zNodes);
transformToArray(node):將節點及其所有後代轉為平坦數組。checkNode(node, checked, checkTypeFlag):checkTypeFlag=true 時聯動父子勾選。checkAllNodes(checked):全樹勾選/取消,慎用於大數據量。若需異步加載子節點,先調用 reAsyncChildNodes(node, 'refresh') 待載入完成後再勾選。