热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

jqueryeasyui的accordion和tabs控件

系统菜单accordion:(静态定义方法)内容折叠显示,可以将复杂的信息分块显示。不仅仅可以用于菜单<divclasseasyui-ac
系统菜单accordion:(静态定义方法)

内容折叠显示,可以将复杂的信息分块显示  。不仅仅可以用于菜单

         aa" class="easyui-accordion">

                   系统管理菜单" icOnCls="icon-ok" >

                  

                  

                   Title2"icOnCls="icon-reload" selected="true">

                            content2

                  

                   Title3">

                            content3

                  

        

用途:

用于左侧菜单。 根据用户的权限显示不同菜单。

要求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">

     

"tabs" class="easyui-tabs"border="false"fit="true">

   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 +='

';//生成了菜单的html

       //自动创建菜单

       $('#nav').accordion('add', {

            title: n.menuname,

            content: menulist,//二级菜单的内容

            iconCls: 'icon ' + n.icon

        });

});

 

 

系统标签tabs:(动态的需要预加载js)

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');//获取iframesrc

       //当重新选中tab时将ifram的内容重新加载一遍,目的是获取当前页面的最新内容

       if(src)

           $('#tabs').tabs('update', {

              tab :currTab,

              options: {

                  content: createFrame(src)//ifram内容

              }

           });

 

    };

 


推荐阅读
author-avatar
茶香未散尽_385_312
这个家伙很懒,什么也没留下!
Tags | 热门标签
RankList | 热门文章
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有