EasyUi之Tabs(选项卡)

原文链接:https://blog.csdn.net/qianbihua00/article/details/115392143

什么是Tabs

选项卡是最流行的导航模式之一(与菜单栏和垂直导航一样)。 选项卡最大的优点是用户很熟悉,而且经常是持久的内容,所以即使用户在网站或应用程序中跳出刚浏览过的内容,他们也不会迷失。

官方示例

 成品示例

Tabs的使用案例

1、通过标签创建选项卡


通过标签可以更容易的创建选项卡,我们不需要写任何Javascript代码。只需要给标签添加一个类ID’easyui-tabs’。每个选项卡面板都通过子标签进行创建,用法和panel(面板)相同。

2. 通过Javascript创建选项卡

下面的代码演示如何使用Javascript创建选项卡,当该选项卡被选择时将会触发’onSelect’事件。

 

添加新的选项卡面板
添加一个新的包含小工具菜单的选项卡面板,小工具菜单图标(8x8)被放置在关闭按钮之前。

 获取选择的选项卡

 

 

 Tabs的事件

 Tabs的方法

 

 Tabs面板

 

创建一个选项卡
昨天学习了树(tree)形结构 今天来学习如何创建一个选项卡

我们要实现的功能
1.首先我们需要一个首页面 固定不动
2.其次当我们去点击 新增的时候要出现新增的选项卡
3.再打开未上架时要切换到未上架的tab页面
4.点击书籍管理页面还有订单管理页面时不会弹出页面 应为他是管理层 而不是显示层
5.当我们再次点击新增页面时不会要再次弹出一个页面 只能有一个新增页面 其他页面同理

 

 

有了思路之后我们开始第一个一个去实现

首先时我们的第一个固定的首页面 应为是展现再center上面所有再center里面套一个div 写上属性就好

1
2
3
4
5
6
7
    <div data-options="region:'center',title:'Center'">
    <div id="bookTabs" class="easyui-tabs" style="width:100%;height:100%;">  
        <div title="首页" style="padding:20px;display:none;">  
              来吧展示  
        </div
    </div
</div>

  

 

然后是是当我们去点击 新增的时候要出现新增的选项卡

我们再文档里面找到创建新的选项卡C到我们前面写好的index.js里面去

其中booktabs是我们前面给的id title:node.text node是节点 text是我们要显示出来的文本content是现实的内容

 接下来的数据库找到url对应的路径 新建两个jsp文件 这里只写两个方便测试就行

 新增界面还有未上架界面

 测试 没问题 已下架没有写jsp页面

 

 

接下来是我们最后两个
点击书籍管理页面还有订单管理页面时不会弹出页面 应为他是管理层 而不是显示层
当我们再次点击新增页面时不会要再次弹出一个页面 只能有一个新增页面 其他页面同理

我们先写if判断是否存再如果存在就切换选项卡 如果不存在就新建一个选项卡 然后找到嵌套的路径
再在else里面再判断如果不为空再新建一个tabs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
$(function(){
    var ctx = $("#ctx").val();
     
    $('#tt').tree({
        url: ctx + '/permission.action?methodName=menuTree',
            onClick: function(node){
                //alert(node.text);  // 在用户点击的时候提示
//              debugger
//              目前,jsp中有一个静态的首页的选项卡tab,当浏览器请求jsp的时候,会调用下列代码,造成页面看到两个tab页
//              我们的需求是 浏览器请求index.jsp 看到首页一个选项卡,当点击某一个树形菜单的一个元素,新增一个选项卡
//              目前存再的问题,重复的tab页反复打开
//              针对于上面存再的问题进行分析,判断当前是否存再对应的title的选项卡
//              如果存再,就切换到对应的选项卡,如果不存再,那么重新答案开一个选项卡
//              <iframe scrolling="no" frameborder="0" src="" width="99%" height="99%"></iframe>
//              $('boolTabs').tabs('exists',node.text);
                if($('#bookTabs').tabs('exists',node.text)){
                    $('#bookTabs').tabs('select',node.text);
                }else{
//                  新增选项卡
//                  存再问题 ,非叶子节点按照开发角度来说数不能打开页面的
//                  分析:非叶子节点都没有跳转页面的
                    var src= node.attributes.self.url;
                    if(src){
                        var content = '<iframe scrolling="no" frameborder="0" src="'+ctx+src+'" width="99%" height="99%"></iframe>';
                        $('#bookTabs').tabs('add',{   
                            title:node.text,   
                            content:content,   
                            closable:true,   
                            tools:[{   
                                iconCls:'icon-mini-refresh',   
                                handler:function(){   
                                    alert('refresh');   
                                }   
                            }]   
                        });
                     }
                     
                }
                }  
        });

  测试
书籍管理没反应

 只能点一次

 

右键关闭tabs

我们一般在页面上开tabs开多了一个一个点很麻烦 所有可以搞个右键菜单关闭tabs
我借鉴了下别人的代码和思路

我们还是再index.jsp写上右击事件中弹出的HTMl内容

 

 

鼠标的右键事件是在EasyUI中通过绑定contextmenu来实现,可以显示右键的选项显示的位置。

其中tabs的关闭时通过操作tabs的索引号进行各种关闭的

 

tabs-header是再页面头部区域点击右键才有效果
recmenu是上面去的id

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
  $(".tabs-header").bind('contextmenu',function(e){          
      e.preventDefault();   
      $('#rcmenu').menu('show', {   
          left: e.pageX,   
          top: e.pageY   
      });   
  });   
  //关闭所有标签页   
  $("#closeall").bind("click",function(){
      var tablist = $('#bookTabs').tabs('tabs');
      for(var i=tablist.length-1;i>0;i--){
          $('#bookTabs').tabs('close',i);
      }
  });
  //关闭当前标签页
  $("#closecur").bind("click",function(){
      var tab = $('#bookTabs').tabs('getSelected');
      var index = $('#bookTabs').tabs('getTabIndex',tab);
      $('#bookTabs').tabs('close',index);
  });
   
//关闭其他页面(先关闭右侧,再关闭左侧)   
$("#closeother").bind("click",function(){   
    var tablist = $('#bookTabs').tabs('tabs');   
    var tab = $('#bookTabs').tabs('getSelected');   
    var index = $('#bookTabs').tabs('getTabIndex',tab);   
    for(var i=tablist.length-1;i>index;i--){   
        $('#bookTabs').tabs('close',i);   
    }   
    var num = index-1;   
    if(num < 1){   
        return;   
    }else{   
        for(var i=num;i>=1;i--){   
            $('#bookTabs').tabs('close',i);   
        }   
        $("#bookTabs").tabs("select", 1);   
    }   
});   
//关闭右边的选项卡 
$("#closeright").bind("click",function(){   
    var tablist = $('#bookTabs').tabs('tabs');   
    var tab = $('#bookTabs').tabs('getSelected');   
    var index = $('#bookTabs').tabs('getTabIndex',tab);   
    for(var i=tablist.length-1;i>index;i--){   
        $('#bookTabs').tabs('close',i);   
    }   
});   
//关闭右边的选项卡 
$("#closeleft").bind("click",function(){   
    var tablist = $('#bookTabs').tabs('tabs');   
    var tab = $('#bookTabs').tabs('getSelected');   
    var index = $('#bookTabs').tabs('getTabIndex',tab);   
    var num = index-1;   
    if(num < 1){   
        return;   
    }else{   
        for(var i=num;i>=1;i--){   
            $('#bookTabs').tabs('close',i);   
        }   
        $("#bookTabs").tabs("select", 1);   
    }    
});   

  测试:
关闭全部

 

 之关闭当前页面

 成功

 除了当前页面其他全部关闭

 成功

 已当前选中为中心 右侧全部关闭

 成功

 已选中点为中心左侧全部关闭

 成功

 

 

posted @   yinghualeihenmei  阅读(865)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示