ztree 组合树对这种应该怎么处理呢?
ztree吧
全部回复
仅看楼主
level 1
1.如上图,在点了父节点之后,要去通过子节点的选中事件,对后边的rideo做处理; 这种情况下,不知道如何处理。
2.如上图,如果是直接在下边点子节点,是可以用callback里面的onCheck来处理。
请问,1的情况应该怎么处理呢?
2014年08月05日 09点08分 1
level 11
看看 autoCheckTrigger 这个设置, 利用 这个可以让所有自动关联 的节点都出发 onChecked 事件!你就可以自行处理了
2014年08月11日 01点08分 2
加了autoCheckTrigger:true之后,子节点还是没有触发onCheck。在onCheck里面自己取到所有的选中的节点过后在里面的处理除了alert出来了,对后边的radio的设置也起不到作用。
2014年08月12日 08点08分
level 1
最后把onCheck改成这种,才起到作用
function onCheck(e, treeId, treeNode) {
var v = *v*;
var p = *p*;
var checked = treeNode.checked;
var isLeaf = treeNode.isLeaf;
if(isLeaf) {
if(checked) {
jQuery(*#*+p+*_* + treeNode.tId).attr("disabled", false);
jQuery(*#*+v+*_* + treeNode.tId).attr("disabled", false);
jQuery(*#*+v+*_* + treeNode.tId).attr("checked", true);
} else {
jQuery(*#*+p+*_* + treeNode.tId).attr("disabled", true);
jQuery(*#*+p+*_* + treeNode.tId).attr("checked", false);
jQuery(*#*+v+*_* + treeNode.tId).attr("disabled", true);
jQuery(*#*+v+*_* + treeNode.tId).attr("checked", false);
}
} else {//遍历子节点
var treeObj = $.fn.zTree.getZTreeObj("treeDemo");
var nodes = treeObj.transformToArray(treeObj.getNodes());
for(var i=0;i<nodes.length;i++){
var thenode = nodes[i];
if(thenode.isLeaf) {
if(thenode.checked) {
jQuery(*#*+p+*_* + thenode.tId).attr("disabled", false);
jQuery(*#*+v+*_* + thenode.tId).attr("disabled", false);
jQuery(*#*+v+*_* + thenode.tId).attr("checked", true);
} else {
jQuery(*#*+p+*_* + thenode.tId).attr("disabled", true);
jQuery(*#*+p+*_* + thenode.tId).attr("checked", false);
jQuery(*#*+v+*_* + thenode.tId).attr("disabled", true);
jQuery(*#*+v+*_* + thenode.tId).attr("checked", false);
}
}
}
}
}
难道autoCheckTrigger:true的设置对子节点一样起不了作用的吗?
2014年08月12日 08点08分 7
请仔细检查你的代码, 我用 Demo 测试了一下, 肯定会对子节点有作用的。
2014年08月12日 10点08分
我发了所有代码出来 ,怎么又不见了,我现在这个还有一个问题,你看上边的代码嘛,处理完之后,如果没有展开子节点,后边对子选中节点的处理都没有用。
2014年08月14日 01点08分
level 1
var setting = {
view: {
addDiyDom: addDiyDom,
selectedMulti: false
},
check: {
enable: true,
autoCheckTrigger: true
},
data: {
simpleData: {
enable: true
}
},
callback: {
onCheck: onCheck
}
};
//var clearFlag = false;
function onCheck(e, treeId, treeNode) {
var v = *v*;
var p = *p*;
var checked = treeNode.checked;
var isLeaf = treeNode.isLeaf;
if(isLeaf) {
if(checked) {
jQuery(*#*+p+*_* + treeNode.tId).attr("disabled", false);
jQuery(*#*+v+*_* + treeNode.tId).attr("disabled", false);
jQuery(*#*+v+*_* + treeNode.tId).attr("checked", true);
} else {
jQuery(*#*+p+*_* + treeNode.tId).attr("disabled", true);
jQuery(*#*+p+*_* + treeNode.tId).attr("checked", false);
jQuery(*#*+v+*_* + treeNode.tId).attr("disabled", true);
jQuery(*#*+v+*_* + treeNode.tId).attr("checked", false);
}
} else {//遍历子节点
var treeObj = $.fn.zTree.getZTreeObj("treeDemo");
treeObj.expandNode(treeNode,true,true);
var nodes = treeObj.transformToArray(treeObj.getNodes());
for(var i=0;i<nodes.length;i++){
var thenode = nodes[i];
if(thenode.isLeaf) {
if(thenode.checked) {
jQuery(*#*+p+*_* + thenode.tId).attr("disabled", false);
jQuery(*#*+v+*_* + thenode.tId).attr("disabled", false);
jQuery(*#*+v+*_* + thenode.tId).attr("checked", true);
} else {
jQuery(*#*+p+*_* + thenode.tId).attr("disabled", true);
jQuery(*#*+p+*_* + thenode.tId).attr("checked", false);
jQuery(*#*+v+*_* + thenode.tId).attr("disabled", true);
jQuery(*#*+v+*_* + thenode.tId).attr("checked", false);
}
}
}
}
}
function addDiyDom(treeId, treeNode) {
if (treeNode.isLeaf) {
var theObj = $("#" + treeNode.tId);
var editStr = "<span id=*radioSpan_" +treeNode.id+ "* >"+
"<input id=*v_" + treeNode.tId + "* name=*vieworrpyRadio_" + treeNode.tId + "* disabled=*true* type=*radio* value=*0* />签收"+
"<input id=*p_" + treeNode.tId + "* name=*vieworrpyRadio_" + treeNode.tId + "* disabled=*true* type=*radio* value=*1* />处理</span>";
theObj.append(editStr);
}
}
/*列出树*/
function initPurviewTree(myObject){
$.fn.zTree.init($("#treeDemo"), setting, myObject);
}
/*返回结果*/
function returnReceives(){
$(*#savepur*).attr(*disabled*,true);
$(*#savepur*).attr(*value*,*请稍候*);
var ids_v = "";
var ids_p = "";
var names_v = "";
var names_p = "";
var zTree = $.fn.zTree.getZTreeObj("treeDemo");
var value = zTree.getCheckedNodes(true);
for(i=0;i<value.length;i++){
var isLeaf=value[i].isLeaf;
var tId=value[i].tId;
var id=value[i].id;
var name=value[i].name;
if(isLeaf) {
if(jQuery(*#v_*+tId).attr(*checked*)) {ids_v+=id+*;*;names_v+=name+*;*;}
if(jQuery(*#p_*+tId).attr(*checked*)) {ids_p+=id+*;*;names_p+=name+*;*;}
}
}
if(names_v != ** || names_p != **){
var receiversMsg = *收件人信息(*;
if(names_v != null && ** != names_v) {
receiversMsg += *可签收收件人:* + names_v + * *;
}
if(names_p != null && ** != names_p) {
receiversMsg += *可处理收件人:* + names_p;
}
receiversMsg += *)*;
//父页面返回值,并关闭本页面
jQuery(*#receiverInfos*,window.opener.document).html(**);
jQuery(*#receiverInfos*,window.opener.document).html(receiversMsg);
jQuery(*#receivers*,window.opener.document).attr(*value*,names_v+names_p);
jQuery(*#receiverIds_v*,window.opener.document).attr(*value*,ids_v);
jQuery(*#receiverIds_p*,window.opener.document).attr(*value*,ids_p);
//alert(receiversMsg+*-*+ids_v+*-*+ids_p);
jQuery(*#info_tr*,window.opener.document).show();
jQuery(*#receiverInfoDiv*,window.opener.document).show();
}
window.close();
}
/*列出树*/
$(document).ready(function(){
var path = $("#path").attr("value");
var sendType = $("#sendType").attr("value");
var gwId = $("#gwId").attr("value");
var conn = new Connection();
var url=path+"gwfsManager.html?action=receiveInit&sendType="+sendType+"&gwId="+gwId;
conn.init(url);
var json = "";
conn.send(json,initPurviewTree);
});
这是所有代码,如果我是点了父节点的话,下的子节点还有子节点,那第一个子节点下的子节点,后边加的radio就出来不了。下图:
如果是一步步的往下点开,就是下图这样的:
为什么会出现这种情况呢。
2014年08月14日 03点08分 8
吧主,会不会是因为我用的3.0的版本的问题?
2014年08月14日 06点08分
用addDiyDom需要显示自定义控件的节点
2014年08月14日 07点08分
回复 菊胜去年红 : 抱歉, 太忙了,没有时间检查你的代码, 自定义控件 是完全可以给所有的节点 添加 dom 的, 请你跟踪一下, addDiyDom 肯定是可以给每一个显示出来的节点 都触发一次
2014年08月28日 01点08分
回复 菊胜去年红 : 另外, 如果觉得有问题,请你去换上最新版本的 zTree 吧
2014年08月28日 01点08分
1