jquery ztree+jquery easyUI创建tab页签问题

如上图,布局使用jqueryeasyUI做的,右侧的树形菜单是使用jqueryztree做的,现在我想实现一个功能,为什么每次我点击树节点都是,在浏览器新打开一个tab页... 如上图,布局使用jquery easyUI做的,右侧的树形菜单是使用jquery ztree做的,现在我想实现一个功能,为什么每次我点击树节点都是,在浏览器新打开一个tab页签呢,我想实现当点击右侧菜单时,在主页面创建一个tab页签怎么做?请在我代码基础上完善。

我的jsp页面代码如下:
var ztree;
var setting = {
data: {
simpleData: {
enable: true
},
callback: {
beforeClick:function(e, treeId, treeNode){
alert(treeId);
var url = treeNode.url;
alert(url);
}
}
}
};
$(function(){
$.getJSON('${thisPath}/menu/init.do',{id:'0'},function(data){
data=eval(data);
zTree=$.fn.zTree.init($("#menu"), setting, data);
});
});

</html>

java代码如下:
/**
* 加载菜单
* @author Chris Suk
* @date 2014-4-22 下午10:13:57
* @param request
* @param ioc
*/
@At("/menu/init")
@Ok("json")
// 返回形式是jsp
public String init(HttpServletRequest request, Ioc ioc) {
String nodes="[{id:'0', pId:0, name:'系统菜单',url:'', open:true,isParent:true},";
try {
List<MenuModel> list = this.menuService.initialize();
if(!list.isEmpty()){
for(MenuModel model : list){
nodes+="{id:'"+model.getId()+"', pId:'"+model.getPid()+"', name:'"+model.getName()+"',url:'"+model.getUrl()+"', target:'main', open:true},";
}
}
if(nodes.length()>1&&nodes.endsWith(",")){
nodes=nodes.substring(0, nodes.length()-1);
}
nodes+="]";
} catch (Exception e) {
e.printStackTrace();
}
System.out.println(nodes);
return nodes;
}
展开
 我来答
learneroner
高粉答主

2014-04-23 · 关注我不会让你失望
知道大有可为答主
回答量:1.1万
采纳率:91%
帮助的人:6555万
展开全部

要在主页面创建tab标签,你得使用easyui的tabs,没看到你上边相关的代码呀。

刚好最近做了类似的项目,大致思路供参考:

1、tab标签放在你的主页面

region='center'的那个div对应你的主页面,id为content_tabs的div是所有tab的面板

下面给出了带有一个默认标签的例子

<div region='center' id="content">
    <div id="content_tabs" class="easyui-tabs">
        <div title="我是默认页面" href="..." closable=true></div> 
    </div>
</div>

2、当你点击ztree时响应一个函数,这个函数在content_tabs中新建tab

function openTab(title,url){ // title是显示的标题,作为tab的标识,url是载入的地址
    if(!$("#content_tabs").tabs('exists',title)) // 如果不存在此tab则创建
        $("#content_tabs").tabs('add',{
            title:title, 
            href:url,
            closable:true,
        });
    else                                         // 如果已经打开则选中
        $("#content_tabs").tabs('select',title);
}
更多追问追答
追问
如果我的ztree数据定义为如下类型var nodes='[{id:1,pid:0,name:'基础数据',url:''},{id:1,pid:0,name:'职务维护',url:'duty.jsp'}]';,但是当我点击该“职务节点”时,就会在浏览器新打开一个tab页面,我想自己控制其打开方式,怎么办?现在主要是这个问题。
即使我定义其beforeClick函数,但是这个函数都不执行。
追答

你没有给ztree添加单击处理事件,修改ztree的setting如下:

var setting = {
    data: {
        simpleData: {
            enable: true
        }
    },
    callback: {
        onClick:openTab  // 单击ztree的响应函数
    }
};

相应的,上面第二步的openTab函数作如下修改

function openTab(event, treeId, treeNode){
    if(!$("#content_tabs").tabs('exists',title)){ // 如果不存在此tab则创建
        if(treeNode.url!="")
            $("#content_tabs").tabs('add',{
                title:treeNode.name, 
                href:treeNode.url,
                closable:true,
            });
    }else{                                       // 如果已经打开则选中
        $("#content_tabs").tabs('select',title);
    }
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式