用途:
用于左侧菜单。 根据用户的权限显示不同菜单。
要求easyui-accordion内部可以自定义div的内容和数量。
自定义div数量
通过add方法添加新菜单(New Title)
function add(){
$('#aa').accordion('add',{
title:'菜单的名称'+idx,
content:'自定义一套二级菜单的html'+idx
});
idx++;
}
'add'为easyui-accordion的方法名,后边的参数为json
{
title:'菜单的名称'
content:'自定义一套二级菜单的html'
}
选中当前菜单
function select(){
$('#aa').accordion('select','Title1');
}
删除当前菜单
function remove(){
varpp = $('#aa').accordion('getSelected');
if(pp){
vartitle = pp.panel('options').title;
$('#aa').accordion('remove',title);
}
}
在本系统中的应用
系统菜单配置在menu.json文件中菜单内容为两层json 数据嵌套分别为一级菜单和二级菜单
{
"menus" : [{"icon" : "icon-sys","menuid": "1","menuname" :"系统管理","url": "","menus" : [
{"icon" :"icon-log","menuid": "1_1","menuname": "用户管理","url" : "/yycgproject/user/queryuser.action"
}]
}
]
}
easyui-accordion控件的引用通过预加载的方式加载菜单
<DIVstyle="background:rgb(238, 238, 238); overflow-y: hidden;"
id="mainPanle"region="center">
DIV>
在script中通过预加载的方式加载菜单
var_menus;
$(function() {//预加载方法
//通过ajax请求菜单
$.ajax({
url : '${baseurl}menu.json',
type : 'POST',
dataType: 'json',
success :function(data) {
_menus= data;
initMenu(_menus);//解析json数据,将菜单生成
},
error : function(msg) {
alert('菜单加载异常!');
}
});
解析json 数据菜单的方法 initMenu通过两层循环解析menus 内容
title="'+o.menuname+'"ref="'+o.menuid+'" href="#" rel="' + o.url 等为自定义的属性作用为点击二级菜单取出rel值打开tab 标签
N 为一级菜单 O为二级菜单
//将后台获取的json菜单数据,组织成html
function initMenu(menus_var) {
$("#nav").accordion({animate:false});
//循环处理json的菜单数据,组织成html
$.each(menus_var.menus, function(i, n) {//外层循环处理一级菜单
var menulist ='';
menulist +=''
;
$.each(n.menus,function(j, o) {//二层处理二级菜单
//这里自定义了一些属性存放菜单的内容:title存放菜单名称rel存放菜单地址,这些在属性在点击菜单时要取出值使用
menulist+= '
});
menulist += '';//生成了菜单的html
//自动创建菜单
$('#nav').accordion('add', {
title: n.menuname,
content: menulist,//二级菜单的内容
iconCls: 'icon ' + n.icon
});
});
Tabs 效果相当于浏览器的标签 就相当于安卓的Tabhost
预加载方法
$(function(){
$('#tt').tabs({
tools:[{
iconCls:'icon-add',
handler:function(){
alert('add');
}
},{
iconCls:'icon-save',
handler:function(){
alert('save');
}
}]
});
});
引用
其他方法 var index = 0; functionaddTab(){ index++; $('#tt').tabs('add',{ title:'NewTab ' + index, content:'', iconCls:'icon-save', closable:true }); } functiongetSelected(){ vartab = $('#tt').tabs('getSelected'); alert('Selected:'+tab.panel('options').title); } functionupdate(){ index++; vartab = $('#tt').tabs('getSelected'); $('#tt').tabs('update',{ tab:tab, options:{ title:'newtitle'+index, iconCls:'icon-save' } }); } 本系统应用:点击菜单打开一个新的标签。标签内容显示菜单链接的内容 本系统显示tabs的区域 <DIVstyle="background:rgb(238, 238, 238); overflow-y: hidden;" id="mainPanle"region="center"> <DIVid="tabs"class="easyui-tabs"border="false"fit="true">DIV> DIV> 实现思路:点击菜单新建一个tab,内容拼接成一个iframe的html 如下 function addTab(){ index++; $('#tt').tabs('add',{ title:'NewTab ' + index, content:'<iframescrolling="yes"frameborder="0" src="http://localhost:8080/yycgproject/first.action#">', iconCls:'icon-save', closable:true }); } 二级菜单与tabs的关联功能实现 1.在二级菜单上加一个点击事件 //鼠标移动效果 //指定a的点击事件是menuclick $('.easyui-accordion lia').click(menuclick).hover(function(){ $(this).parent().addClass("hover"); },function(){ $(this).parent().removeClass("hover"); }); } 2.点击事件(获取二级菜单的属性tabTitle url icon)触发addTab方法 //菜单单击事件 varmenuclick= function(){ //var tabTitle= $(this).children('.nav').text(); //获取二级菜单的title,数据从后台的menu.json中获取 vartabTitle = $(this).attr("title"); //获取二级菜单的url,rel是获取json数据时拼接成的html的一部分 varurl = $(this).attr("rel"); var menuid = $(this).attr("ref"); varicon = 'icon '+$(this).attr("icon"); addTab(tabTitle,url,icon); $('.easyui-accordion lidiv').removeClass("selected"); $(this).parent().addClass("selected"); }; 3.添加标签并拼接创建iframe(如果tabs存在就选中不存在就创建) function addTab(subtitle,url,icon){ //如果指定标题的tab不存则添加一个新的 if(!$('#tabs').tabs('exists',subtitle)){ $('#tabs').tabs('add',{ title:subtitle, content:createFrame(url), closable:true, icon:icon }); }else{ //如果tabs已创建则选中 $('#tabs').tabs('select',subtitle); } } 4. 根据url 拼接创建iframe functioncreateFrame(url) { var s =''; return s; } 5.界面欢迎页面(onSelect :tabOnSelect选中tab执行的事件) //加载欢迎页面 $('#tabs').tabs('add', { title : '欢迎使用', content :createFrame('${baseurl}welcome.action') }).tabs({ //当重新选中tab时将ifram的内容重新加载一遍 onSelect :tabOnSelect }); //修改密码 $('#modifypwd').click(menuclick); }); 6. 重新选中tabs时重新刷新页面内容 tabOnSelect('update'更新tab 的内容并重新构造一个iframe. 相当于刷新iframe功能) vartabOnSelect = function(title) { //根据标题获取tab对象 varcurrTab = $('#tabs').tabs('getTab', title); variframe = $(currTab.panel('options').content);//获取标签的内容 varsrc = iframe.attr('src');//获取iframe的src //当重新选中tab时将ifram的内容重新加载一遍,目的是获取当前页面的最新内容 if(src) $('#tabs').tabs('update', { tab :currTab, options: { content: createFrame(src)//ifram内容 } }); };