zTree设置的自定义target为什么不起作用
拉美妮雅 2012-03-11 01:10:29 今天用zTree做了个异步加载的树,但是发现后台定义节点超链接的自定义target属性并没有起作用,而是默认成_blank,js中也引入了dwz的tree.js,不知道是不是与zTree的js相冲突,请各位大虾帮忙看看,谢谢大家,下面是我的代码:
jsp代码中先是这样定义的:
var setting = {
view: {
showIcon: false
},
data: {
simpleData: {
enable: true
}
},
async: {
enable: true,
url: "/ServiceAction/com.velcro.base.category.servlet.ZTreeAction",
autoParam: ["id"],
otherParam: ["action","categorySelect","rootId",ulId,"rootType","<%= model %>"],
dataType: "json",
type: "post"
}
};
$.fn.zTree.init($("#zTreeUl"), setting);
后台action返回的是json格式的字符串:
[{"id":"40288041128c2bf201128c2f737a000b","open":true,"pId":"402881e60bac95a8010bad74be020009","name":"湖北客户","target":"navTab","isParent":true,"url":"http://www.baidu.com"},.....]
这里我指定了该节点target的目标为navTab,但是没有起作用。但是,如果把action返回的这串字符串拿到前台定义就起作用,改后的js为:
var zNodes = [{"id":"40288041128c2bf201128c2f737a000b","open":true,"pId":"402881e60bac95a8010bad74be020009","name":"湖北客户","target":"navTab","isParent":true,"url":"http://www.baidu.com"},.....];
var setting = {
view: {
showIcon: false
},
data: {
simpleData: {
enable: true
}
}
};
$.fn.zTree.init($("#zTreeUl"), setting, zNodes);
不知道是什么原因。
后来又测试了另一种办法,就是在service类中一次把所有节点的信息都拼成json串,然后在前台的js中引入该串,这个时候又出现了一个问题,默认展开的节点target自定义目标是起作用的,但是新打开的子节点,target自定义目标是不起作用的。代码如下:
service类中的代码片段为:
JSONArray jsonArray = this.returnZTreeJson(params, new JSONArray(), rootId);
return jsonArray.toJSONString();
返回的json串为:
[{"id":"demo1","open":false,"pId":"demo0","name":"湖北客户","target":"navTab","isParent":true,"url":"http://www.baidu.com"},
{"id":"demo2","open":false,"pId":"demo1","name":"武汉客户","target":"navTab","isParent":true,"url":"http://www.baidu.com"}]
jsp上引入service返回的json串并生成ztree的代码为:
<script type="text/javascript">
<%
String zTreeJson = new ZTreeService().getZTreeJson(params).replace("\\/", "/");
%>
var zNodes = <%= zTreeJson %>;
var setting = {.....};
$.fn.zTree.init($("#ztreeDemo"), setting, zNodes);
</script>
这个时候,id为demo1的节点target是起作用的,但是当展开出demo2节点后,点击demo2的时候target就不起作用了。