四、easyUI中的tabs(选项卡)组件

news2024/11/25 8:17:16

1.tabs(选项卡)组件的概述

选项卡会显示一批面板,但在同一个时间只会显示一个面板。每个选项卡面板都有头标题和一些小的按钮工具菜单,包括关闭按钮和其他自定义按钮。

在这里插入图片描述

2.tabs(选项卡)组件的使用

在项目新建一个04-tabs目录,并在该目录下新建一个04-tabs.html页面

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>tab</title>
    <!-- 引入easyUI的css文件和js库 -->
    <link rel="stylesheet" type="text/css" href="./js/themes/default/easyui.css">
    <link rel="stylesheet" type="text/css" href="./js/themes/icon.css">
    <script type="text/javascript" src="./js/jquery.min.js"></script>
    <script type="text/javascript" src="./js/jquery.easyui.min.js"></script>
</head>
<body>
    <div id="tt" class="easyui-tabs" style="width:500px;height:250px;">
        <div title="数据区域" data-options="closable:true" style="padding:20px;display:none;">
            数据区域
        </div>
    </div>
</body>
</html>

从以上HTML页面中,可以发现使用到了一个选项卡面板属性,即closable属性。选项卡面板除了有下表列出的一些公共属性之外

属性名属性值类型描述默认值
idstring选项卡面板的ID属性null
titlestring选项卡面板的标题文本
contentstring选项卡面板的内容
hrefstring从URL加载远程数据内容填充到选项卡面板null
cacheboolean如果为true,在href属性设置了有效值的时候缓存选项卡面板true
iconClsstring定义了一个图标的CSS类ID显示到选项卡面板标题。nul
widthnumber选项卡面板宽度auto
heightnumber选项卡面板高度auto
collapsibleboolean如果为true,则允许选项卡摺叠false

还有它独有的属性,如下表所示

属性名属性值类型描述默认值
closableboolean在设置为true的时候,选项卡面板将显示一个关闭按钮,在点击的时候会关闭选项卡面板false
selectedboolean在设置为true的时候,选项卡面板会被选中false

如下图所示的效果:

在这里插入图片描述

有这样一个需求,点击一个按钮就要能创建一个选项卡面板

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>tab</title>
    <!-- 引入easyUI的css文件和js库 -->
    <link rel="stylesheet" type="text/css" href="./js/themes/default/easyui.css">
    <link rel="stylesheet" type="text/css" href="./js/themes/icon.css">
    <script type="text/javascript" src="./js/jquery.min.js"></script>
    <script type="text/javascript" src="./js/jquery.easyui.min.js"></script>
</head>
<body>
    <a href="#" id="btn" class="easyui-linkbutton">按钮</a>
    <div id="tt" class="easyui-tabs" style="width:500px;height:250px;">
        <div title="数据区域" data-options="closable:true" style="padding:20px;display:none;">
            数据区域
        </div>
    </div>

    <script type="text/javascript">
        //点击按钮创建一个选项卡面板
        $(function () {
            $("#btn").click(function() {
                //添加一个新的选项卡面板
                $('#tt').tabs('add',{
                    title:'客户管理',
                    content:'客户管理的数据',
                    closable:true
                });
            });
        });
    </script>
</body>
</html>

在编写以上js代码时,用到了选项卡组件的一个方法,即add方法

在这里插入图片描述

在Google Chrome浏览器中访问该页面

在这里插入图片描述

发现每点击此按钮,就新创建一个选项卡面板,这显然是不合逻辑的,合逻辑的应该是要先判断选项卡面板是否存在,如果已经存在了,那么就让其被选中,如果没有存在,那么就新创建一个选项卡面板。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>tab</title>
    <!-- 引入easyUI的css文件和js库 -->
    <link rel="stylesheet" type="text/css" href="./js/themes/default/easyui.css">
    <link rel="stylesheet" type="text/css" href="./js/themes/icon.css">
    <script type="text/javascript" src="./js/jquery.min.js"></script>
    <script type="text/javascript" src="./js/jquery.easyui.min.js"></script>
</head>
<body>
    <a href="#" id="btn" class="easyui-linkbutton">按钮</a>
    <div id="tt" class="easyui-tabs" style="width:500px;height:250px;">
        <div title="数据区域" data-options="closable:true" style="padding:20px;display:none;">
            数据区域
        </div>
    </div>

    <script type="text/javascript">
        //点击按钮创建一个选项卡
        $(function() {
            $("#btn").click(function() {
                //判断标题为客户管理的选项卡是否存在?
                var flag = $("#tt").tabs("exists", "客户管理");
                if (flag) {
                    //已经存在该选项卡了
                    //那么选择一个标题为客户管理的选项卡面板(让其被选中)
                    $('#tt').tabs("select", "客户管理");
                } else {
                    //不存在该选项卡
                    //添加一个新的选项卡
                    $('#tt').tabs('add',{
                        title:'客户管理',
                        content:'客户管理的数据',
                        closable:true
                    });
                }
            });
        });
    </script>
</body>
</html>

在编写以上js代码时,又用到了选项卡组件的两个方法,即exists方法和select方法

方法名方法参数描述
selectwhich选择一个选项卡面板,'which’参数可以是选项卡面板的标题或者索引
existswhich表明指定的面板是否存在,'which’参数可以是选项卡面板的标题或索引

在Google Chrome浏览器中访问该页面

在这里插入图片描述

此刻,要做的事情就是点击各分类面板里面的超链接,然后在中间区域面板中新建一个选项卡面板,并在该选项卡面板中加载相应的数据,正如下图所示的这样

在这里插入图片描述

在HTML页面上简单使用下<iframe>标签,在所在项目的目录下新建一个test.html页面

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>test</title>
</head>
    <body>
        <!-- 这里发起的就是一次新的请求 -->
        <iframe src=""></iframe>
    </body>
</html>

如下图所示:

在这里插入图片描述

如果想要将该块区域隐藏掉,那么test.html页面的内容就应该改成下面这样

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>test</title>
</head>
    <body>
        <!-- 这里发起的就是一次新的请求 -->
        <iframe src="" style="border: 0px"></iframe>
    </body>
</html>

3.重构首页

index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>首页</title>
    <!-- 引入easyUI的css文件和js库 -->
    <link rel="stylesheet" type="text/css" href="../js/themes/default/easyui.css">
    <link rel="stylesheet" type="text/css" href="../js/themes/icon.css">
    <script type="text/javascript" src="../js/jquery.min.js"></script>
    <script type="text/javascript" src="../js/jquery.easyui.min.js"></script>
    <style type="text/css">
        /* 自己定义的样式,去掉超链接的下划线 */
        .menuA {
            text-decoration:none;
        }
    </style>
</head>
<body>
    <!-- 布局 -->
    <div id="cc" class="easyui-layout" data-options="fit:true">
        <!-- 面板 -->
        <div data-options="region:'north',title:'CRM管理系统',split:true" style="height:100px;"></div>
        <div data-options="region:'west',title:'系统菜单',split:true" style="width:200px;">
            <!-- 分类容器 -->
            <div id="aa" class="easyui-accordion" data-options="fit:true">
                <div title="客户管理" data-options="iconCls:'icon-save',selected:true" style="overflow:auto;padding:10px;">
                    <a href="tabs/customer.html" class="menuA">客户管理</a>
                </div>
                <div title="联系人管理" data-options="iconCls:'icon-reload'" style="padding:10px;">
                    <a href="tabs/linkman.html" class="menuA">联系人管理</a>
                </div>
                <div title="拜访记录管理" data-options="iconCls:'icon-reload'" style="padding:10px;">
                    <a href="#" class="menuA">拜访记录管理</a>
                </div>
                <div title="统计分析" data-options="iconCls:'icon-reload'" style="padding:10px;">
                    <a href="#" class="menuA">统计分析</a>
                </div>
                <div title="系统管理" data-options="iconCls:'icon-reload'" style="padding:10px;">
                    <a href="#" class="menuA">系统管理</a>
                </div>
            </div>
        </div>

        <div id="tt" data-options="region:'center'" class="easyui-tabs" style="padding:5px;background:#eee;">
            <div title="数据区域" data-options="closable:true" style="padding:20px;display:none;">
                数据区域
            </div>
        </div>
    </div>

    <script type="text/javascript">
        $(".menuA").click(function () {
            // 1.在点击各分类面板里面的超链接时,要得到超链接里面的文本内容,例如客户管理、联系人管理等
            let testContext = this.innerHTML;
            // 2.获得到超链接请求的ur1路径,这个ur1路径很重要,因为待会要从这个url路径处获取响应数据
            let ur = this.href;
            // 3.创一个选项卡。由于创建一个选项的代码比较多,所要这里可以抽取成一个函数,并将超链接里面的文本内容与ur1路径传递到该函数中
            createTabs(testContext, ur);
            // 4.点击超链接时,由于它总会跳转,但在这里我们要让其不能跳转
            return false;
        });

        // 创建选项卡面板的函数
        function createTabs(textContent, url) {
            // 判断选项卡面板是否存在
            var flag = $("#tt").tabs("exists", textContent);
            if (flag) {
                // 如果已经存在该选项卡面板了,那么就让其被选中
                $('#tt').tabs("select", textContent);
            } else {
                // 如果不存在该选项卡面板,那么创建一个新的选项卡面板
                $('#tt').tabs('add',{
                    title: textContent,
                    content: createUrl(url),
                    closable: true
                });
            }
        }

        function createUrl(url) {
            /**
             * <iframe>标签的应用,可以在任何的一个地方都能用,它就是页面里面的一块区域。
             * 经常有人用<iframe>标签隐式提交一些东西,他往<iframe>标签里面放个表单啥的,然后把<iframe>标签隐藏掉,你在页面上看不着
             * 然后它也向后台提交数据了!
             */
            return "<iframe src='" + url + "' style='border:0px; width:100%; height:95%'></iframe>";
        }
    </script>
</body>
</html>

customer.html

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>客户管理</title>
</head>
    <body>
        客户管理的数据。。。。。。。
    </body>
</html>

linkman.html

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title> 联系人管理</title>
</head>
    <body>
        联系人管理的数据。。。。。。。
    </body>
</html>

如图所示效果:

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/548884.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【C++】——内存管理(new和delete)

文章目录 1. 前言2. C/C内存分布3. C语言动态内存管理方式4. C内存管理方式4.1 内置类型4.2 自定义类型 5. operator new与operator delete函数6. new和delete的实现原理7. 定位new表达式(placement-new)8. 结尾 1. 前言 在学习C语言的时候&#xff0c;我们学习了动态内存管理…

物联网协议之MQTT

MQTT 简介 MQTT 可以简单看做一个网络协议&#xff0c;用于机器对机器的通信&#xff08;与客户端到服务器的传输有点区别&#xff09;。智能传感器、可穿戴设备和其他物联网&#xff08;IoT&#xff09;设备通常必须通过带宽有限的资源受限网络传输和接收数据。这些物联网设…

更新cuda和 pytorch==1.12.1版本,更新到cuda11.3.1

nvidia-smi 查看gpu支持的最高cuda版本 nvcc -V 查看当前cuda版本 卸载旧版本cuda 除了NVIDIA Geforce、NVIDIA PhysX、NVIDIA图形驱动程序&#xff0c;将电脑中其他NVIDIA开头的全部卸载 安装cuda 下载适合的cuda版本 https://developer.nvidia.com/cuda-toolkit-ar…

基于QT开发的使用OPC_UA与西门子1200,1500系列PLC通信的工业监控Demo

目录 一&#xff0c;总体介绍 二&#xff0c;需要的软件 三&#xff0c;需要的硬件 四&#xff0c;QT程序代码 五&#xff0c;西门子PLC代码 一&#xff0c;总体介绍 先看一下图1-1的QT运行界面图&#xff0c;界面中服务器地址就是OPC_UA服务器地址&#xff0c;整个项目作…

图解LeetCode——19. 删除链表的倒数第 N 个结点

一、题目 给你一个链表&#xff0c;删除链表的倒数第 n 个结点&#xff0c;并且返回链表的头结点。 二、示例 2.1> 示例 1&#xff1a; 【输入】head [1,2,3,4,5], n 2 【输出】[1,2,3,5] 2.2> 示例 2&#xff1a; 【输入】head [1], n 1 【输出】[] 2.3> 示例…

数值计算 - 误差的来源

误差的来源是多方面的&#xff0c;但主要来源为&#xff1a;过失误差&#xff0c;描述误差&#xff0c;观测误差&#xff0c;截断误差和舍入误差。 过失误差 过失误差是由设备故障和人为的错误所产生的误差&#xff0c;在由于每个人都有“权利”利用机器进行数值计算,所以在计算…

#include <archive.h>报错

#include <archive.h>报错 archive配置 Linux环境下&#xff0c;在C项目.cpp文件中存在如下语句&#xff0c;导致无法运行~ #include <archive.h> #include <archive_entry.h>由于C编译器默认不包含archive&#xff0c;所以我们需要自行配置。 Libarchiv…

Java 基础--interview经典(个人认为)题目

1&#xff09;多线程中 synchronized 锁升级的原理是什么&#xff1f; synchronized 锁升级原理&#xff1a;在锁对象的对象头里面有一个 threadid 字段&#xff0c;在第一次访问的时候 threadid 为空&#xff0c;jvm 让其持有偏向锁&#xff0c;并将 threadid 设置为其线程 i…

终の序章(一)

前言 写在我大三的最后一次省赛 &#xff0c;也是最后一次比赛 从半年前区域赛的大失利&#xff0c;导致我曾一度放弃算法竞赛和算法训练 新路历程 考虑到前几次的省赛&#xff0c;我们这次采取 稳 的一种方式&#xff0c;因为前几次省赛难度跨度较 大&#xff0c;对于大部…

【牛客网面试必刷TOP101】链表篇(二)

【牛客网面试必刷TOP101】链表篇&#xff08;二&#xff09; 前言刷题网站刷题&#xff01;BM4 合并两个排序的链表思路一&#xff1a;双指针思路二&#xff1a;递归&#xff08;扩展思路&#xff09; BM5 合并k个已排序的链表思路一&#xff1a;归并排序思想 BM6 判断链表中是…

内网渗透(七十九)之 CVE-2021-42287 权限提升漏洞

CVE-2021-42287 权限提升漏洞 漏洞背景 2021年11月9日,微软发布11月份安全补丁更新。在该安全补丁更新中,修复了两个域内权限提升漏洞CVE-2021-42287 、CVE-2021-42278。当时这两个漏洞的利用详情和POC并未公布,因此并未受到太多人关注。 一个月后,国外安全研究员公布了…

[CTF/网络安全] 攻防世界 ics-06 解题详析

[CTF/网络安全] 攻防世界 ics-06 解题详析 姿势&#xff08;Burp爆破&#xff09; 题目描述&#xff1a;云平台报表中心收集了设备管理基础服务的数据&#xff0c;但是数据被删除了&#xff0c;只有一处留下了入侵者的痕迹。 可知&#xff1a;报表中心含有部分数据 仅报表中心…

C++内存管理/函数模板/类模板

一、C内存管理 C中内存基本形式与C语言类似&#xff0c;可以参考下图。 X64环境下总共大小为8G,X86环境下为4G。 1、内核空间&#xff1a;用户不能读写&#xff0c;但要占用一定空间。 2、栈区&#xff1a;以开辟、销毁栈帧形式运行&#xff0c;主要应用于局部变量和函数栈帧…

chatgpt赋能Python-python3_choice

Python3中的choice()函数&#xff1a;一种简单而有趣的随机选择方式 在Python3中&#xff0c;choice()函数是一个常见的随机模块。它允许我们从一个序列中随机选择一个元素。这在程序中经常用于生成一些需要随机展示的数据。本文将介绍Python3中的choice()函数&#xff0c;并探…

00.SpringCloud服务调用方式

服务调用方式 RPC和HTTP 无论是微服务还是SOA&#xff0c;都面临着服务间的远程调用。那么服务间的远程调用方式有哪些呢&#xff1f; 常见的远程调用方式有以下2种&#xff1a; RPC&#xff1a;Remote Produce Call远程过程调用&#xff0c;类似的还有 。自定义数据格式&am…

合合信息亮相CCIG2023:多位大咖共话智能文档未来,文档图像内容安全还面临哪些技术难题?

近日&#xff0c;中国图象图形大会&#xff08;CCIG 2023&#xff09;&#xff08;简称“大会”&#xff09;在苏州圆满落幕。本届大会以“图象图形向未来”为主题&#xff0c;由中国科学技术协会指导&#xff0c;中国图象图形学学会主办&#xff0c;苏州科技大学承办&#xff…

干货 | 利用SPSS进行高级统计第一期(更新)

Hello&#xff0c;大家好&#xff01; 这里是壹脑云科研圈&#xff0c;我是喵君姐姐~ 在之前的文章中&#xff0c;我们以此介绍了如何利用SPSS进行高级统计分析&#xff0c;内容包括&#xff1a; (1)描述性统计表格模板、卡方&T检验、相关&回归分析 (2)中介、多重中…

MD5_buuctf

概念 MD5信息摘要算法&#xff0c;一种被广泛使用的密码散列函数&#xff0c;可以产生出一个128位&#xff08;16字节&#xff09;的散列值&#xff08;hash value&#xff09;&#xff0c;用于确保信息传输完整一致。 MD5算法具有以下特点&#xff1a; 压缩性&#xff1a;任意…

一次失败的面试经历:我只想找个工作,你却看不起我?还用面试题羞辱我...

这段时间都说难找工作&#xff0c;没有面试机会。面对如此严峻的形式&#xff0c;很多软件测试人员都希望能拿一个满意的高薪offer&#xff0c;但是随着招聘职位的不断增多&#xff0c;面试的难度也随之加大&#xff0c;而面试官更是会择优录取 我最近为面试已经焦头烂额了&am…

循坏队列+OJ题之设计循环队列

生命不是要等待风暴过去&#xff0c;而是要学会在风暴中跳舞。 ——卡莉尔吉布朗目录 &#x1f33a;前言&#xff1a; &#x1f341;一.循环队列是什么&#xff1f; &#x1f34f;二.循环队列有什么作用&#xff1f; &#x1f340;三.OJ题之设计循环队列 1…