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就不起作用了。
...全文
593 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
scscms太阳光 2013-03-23
  • 打赏
  • 举报
回复
<script type="text/javascript"> var setting = { async: { enable: true, url: "/ServiceAction/com.velcro.base.category.servlet.ZTreeAction", autoParam: ["id"], otherParam: ["action","categorySelect","rootId",ulId,"rootType","<%= model %>"], dataType: "json", type: "post", dataFilter: filter } }; function filter(treeId, parentNode, childNodes) { if (!childNodes) return null; for (var i=0, l=childNodes.length; i<l; i++) { childNodes[i].url=childNodes[i].url; //childNodes[i].target="navTab"; 可写固定值 childNodes[i].target=childNodes[i].target; } return childNodes; } $(document).ready(function(){ $.fn.zTree.init($("#ztreeDemo"), setting); }); </script>
Danielankang 2013-03-23
  • 打赏
  • 举报
回复
我也碰到相同的问题,测试了一下,我用浏览器调试,把页面代码拷贝出来,拷贝出来后的只要是树的Id还在用,就会报错,所以我猜测是zTree的Bug,目前还没有解决,期待达人的回复。
wjlotus 2012-12-01
  • 打赏
  • 举报
回复
我也遇到这个问题了,不知道楼主解决没?
gongjian1212 2012-04-09
  • 打赏
  • 举报
回复
simpleData enable为true时 只认识那么4个属性 id pId name rootPid

87,907

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧