var setting = {
check: {enable: true,nocheckInherit: true},
async: {enable: true,url:"",autoParam:["tcode"],dataFilter: filter},
callback: {onCheck:zTreeOnCheck,onClick:zTreeOnClick,onExpand: onExpand}
};
function onExpand(event, treeId, treeNode)
{
var zTree = $.fn.zTree.getZTreeObj("treeDemo");
if(treeNode.checked)
{
for(var j=0;j<treeNode.children.length;j++)
zTree.setChkDisabled(treeNode.children[j], true);
}
}
function setCheck() {
var zTree = $.fn.zTree.getZTreeObj("treeDemo");
zTree.setting.check.chkboxType = { "Y" : "", "N" : "p" };
}
function filter(treeId, parentNode, childNodes) {
return childNodes;
}
//用zTree方法勾選checkbox
function zTreeOnCheck(e, treeId, treeNode){
var isTure=false;//標誌位,用來判斷父節點下的子節點是否都選中了,是爲true,沒有爲false
var checked=treeNode.checked;//獲取節點的選中狀態
var zTree = $.fn.zTree.getZTreeObj("treeDemo");//獲取ztree對象
if(!checked&&treeNode.children!=null)//父節點取消選擇
{
for(var j=0;treeNode.isParent&&j<treeNode.children.length;j++)
zTree.setChkDisabled(treeNode.children[j], false); //設置子節點可選
}
else{//父節點選擇了
for(var j=0;treeNode.isParent&&treeNode.children!=null&&j<treeNode.children.length;j++)
{
zTree.checkNode(treeNode.children[j],false,false);//取消全部的子節點
zTree.setChkDisabled(treeNode.children[j], true);//設置子節點不可選
}
}
var nodes=treeNode;//把節點付給nodes
if(nodes.isParent&&checked&&treeNode.open&&nodes.length!=null)//父節點展開了,而且有子節點,選中了
{
for(var j=0;j<nodes.children.length;j++)
zTree.setChkDisabled(nodes.children[j], true);
}
var node="";
if(nodes.getParentNode()!=null)
node=zTree.getNodeByParam("id", nodes.getParentNode().id);//獲取當前子節點的父節點,如有
var child=node.children;//獲取父節點下的子節點
if(child!=undefined)
{
for(var i=0;i<child.length;i++)
{
if(child[i].checked)//判斷父節點下子節點的選中狀態
{isTure=true;}
else{isTure=false;}
}
if(isTure==true)
{//子節點都選擇了
zTree.checkNode(node, true, false);//選中父節點爲勾選狀態
for(var i=0;i<child.length;i++)
{
zTree.checkNode(child[i],false,false);//取消全部的子節點
zTree.setChkDisabled(child[i], true);//不能選了
}
}
}
}
/*function getAllChildrenNodes(treeNode,result){
alert(treeNode.level);
if (treeNode.isParent) {
var childrenNodes = treeNode.children;
if (childrenNodes) {
for (var i = 0; i < childrenNodes.length; i++) {
result += childrenNodes[i].tcode+",";
}
}
}
return result;
} */ node
//目錄中點擊方法
function zTreeOnClick(event, treeId, treeNode) {
var zTree = $.fn.zTree.getZTreeObj("treeDemo");
if(treeNode.getChkDisabled)
{if(treeNode.checked)//更改當前checkbox的勾選狀態
{
zTree.checkNode(treeNode,false,false);
}
else{
zTree.checkNode(treeNode,true,false);
}
zTreeOnCheck(event, treeId, treeNode);//調用checkbox的點擊狀態函數
}
/*else{
if(treeNode.checked)//更改當前checkbox的勾選狀態
{
zTree.checkNode(treeNode,false,false);
}
else{
zTree.checkNode(treeNode,true,false);
}
zTreeOnCheck(event, treeId, treeNode);//調用checkbox的點擊狀態函數
}*/
}; json
$(document).ready(function(){
$.fn.zTree.init($("#treeDemo"), setting);
setCheck();
}); async
function c()
{
var delidID="", delidName="";var node="";
var zTree = $.fn.zTree.getZTreeObj("treeDemo").getCheckedNodes(true);//獲取全部選中狀態的節點
for (var i = 0; i < zTree.length; i++) {
delidID += zTree[i].id + ",";
delidName += zTree[i].name + ",";
}
alert(delidID+delidName);
} 函數
json格式爲id:'1',name:'工具類',tcode:'01',isParent:true 工具
這個的做用就是若是選擇了父節點下的全部本身點,那麼子節點自動取消選中狀態,父節點選中,同時子節點不可選。有個小bug就是若是上來就選父節點下的最後一個節點,就會出現上述現象,目前沒有發現問題所在,我在看看,解決了在發個新的,最近作項目,小弟剛看ztree兩天,代碼寫的很不規範,還請大蝦們多多指教 url