jQuery UI简单的讲解

我们先进入一下问答时间,你都知道多少呢?

(1)什么是jQuery UI 呢?

  解答:jQuery UI 是以 jQuery 为基础的开源 JavaScript 网页用户界面代码库。包含底层用户交互、动画、特效和可更换主题的可视控件。我们可以直接用它来构建具有很好交互性的web应用程序。所有插件测试能兼容IE 6.0+, Firefox 3+, Safari 3.1+, Opera 9.6+, 和GoogleChrome。

(2)jQuery UI 的组件组成:

 解答:Query UI 主要分为3个部分:交互、微件和效果库。

(3)jQuery UI和jQuery的主要区别?

 解答:(1) jQuery是一个js库,主要提供的功能是选择器,属性修改和事件绑定等等。

         (2) jQuery UI则是在jQuery的基础上,利用jQuery的扩展性,设计的插件。提供了一些常用的界面元素,诸如对话框、拖动行

         为、改变大小行为等等。

简单的问答就先到这里吧,让我们切入代码的世界吧!

第一个小示例:利用dialog实现form表单提交

第一步先准备项目所需的jQuery UI所需要的支持文件

<!-- 样式引用-->
<link rel="stylesheet" href="themes/base/jquery.ui.all.css">
<!--  jQuery引用-->
<script type="text/javascript" src="js/jQuery1.11.1.js"></script>
<!-- jQuery UI引用 -->
<script type="text/javascript" src="js/jquery-ui.js"></script>

官网下载地址:http://jqueryui.com/download/

在项目webapp下创建文件夹,名称为js,把文件发在js文件夹下。目录结构如下:

第二步搭建页面:

<body>
<div id="dialog">
    <h2>用户登录</h2>
    <form action="ls" method="post"> 
        用户名:<input type="text" name="uname" id="uname"/><br/>
        密    码:<input type="text" name="pwd" id="pwd"/><br/>
        </form>
</div>
<input id="opener" type="button" value="打开form表单"/>
</body>

<script type="text/javascript">
   $(function(){
       $("#dialog").dialog({
           //是否自动打开  默认为true
           autoOpen:false,
           width:350,
           height:350,
           //点击按钮触发
           buttons:{
               "提交":function(){
                    //表单提交
                   $("form").submit();
               }
           }
       });
        //点击对话窗口时打开隐藏的form表单
       $("#opener").click(function(){
           $("#dialog").dialog("open");
       });
       });
</script>

dialog插件的常用参数:

 
   常用参数:
     属性                  类型                     说明
    Boolean autoOpen      属性          设置该组件被调用时的打开状态。默认值为true,即打开对话框
    Object buttons 或
    Array buttons          属性          显示一个按钮,可以设置该按钮的显示文本和点击函数
    Boolean modal          属性          设置组件是否使用模式窗口。默认为false
    close()                  方法          执行关闭对话框操作
    open()                  方法          执行打开对话框操作
    beforeClose(event,ui) 事件          当dialog尝试关闭时,此事件将被触发
                                      参数说明:event为事件对象,ui为当前插件对象
    close(event,ui)          事件          当dialog被关闭后,此事件将被触发
    open(event,ui)          事件          当dialog被打开后,此事件将被触发

可以根据上面的参数,编写代码。

用户登录提交到servlet进行判断,所以我在这里创建了一个LoginServlet进行逻辑判断

public class LoginServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
 
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request, response);
    }
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String name = request.getParameter("uname");
        String pwd = request.getParameter("pwd");
        if("1".equals(name)&&"1".equals(pwd)){
            request.getSession().setAttribute("name",name);
            response.sendRedirect("/09jQueryUI/success.jsp");
        }else{
            response.sendRedirect("/09jQueryUI/index.jsp");
        }
    }

}

成功页面把用户名打印出来即可。。

<body>
      欢迎:<%=request.getSession().getAttribute("name") %>
</body>

上述的代码就是一个简单的dialog插件应用的小案例,你再也不用羡慕那些网站做的花哨的页面了,因为你也可以的。。。。。

接下来我继续讲解下一个jQuery UI常用的插件,会是什么呢?来猜一猜,它就是tabs插件

tabs插件支持多种风格的选项卡模式,普通选项卡,带子选项的选项卡,扁平风格的选项卡,响应式选项卡和手机选项卡等。

上述的支持文件我们就不再次讲解了。

页面的创建:

<body>
<div id="myTabs">
<ul>
   <li><a href="#firstTab">第一个</a></li>
   <li><a href="#secondTab">第二个</a></li>
   <li><a href="#thirdTab">第三个</a></li>
   
   
</ul>
   <div id="firstTab">第一个选项卡</div>
   <div id="secondTab">第二个选项卡</div>
   <div id="thirdTab">第三个选项卡</div>
</div>
</body>

<script></script>标签内的代码:你也可以在选项卡内在嵌套子选项卡,在这里就是做实现了,有想法的同学可以在闲余的时间试试。。。。

我们还要讲点什么呢,总觉得缺少点东西是不是,对了还有menu插件呢?

menu:菜单的意思。

我们经常在上网的时候,有很多网站都有下拉列表框包含子类的效果,我们也可以做一个简单的效果。。。。

<div >
   <ul id="menu">
     <li><a href="#">系统管理</a></li>
     <li><a href="#">市场管理</a></li>
     <li><a href="#">财务管理</a>
        <ul>
             
          <li class="ui-state-disabled"><a href="#">财务部</a></li>
          <li><a href="#">考核部</a></li>
        </ul>
     </li>
     <li><a href="#">产品管理</a>
        <ul>
          <li><a href="#">产品检测部</a>
            <ul>
              <li><a href="#">产品合格</a></li>
              <li><a href="#">产品报废</a></li>
            </ul>
          </li>
          <li><a href="#">产品销售部</a>
            
          </li>
        </ul>
     </li>
   </ul>

</div>

<script></script>标签内的代码:

<script type="text/javascript">
   $(function(){
     
      $("#dialog").hide();
      $("#mydiv").mouseover(function(){
          $("#dialog").show();  
      });
      $("#mydiv").mouseout(function(){
          $("#dialog").hide();  
      }); 
      
      $("#menu").menu({
          //不可用 
         // disabled:true,
         //获得焦点触发的事件
          focus:function(){
            //当我们移动到任何选项上时,都会把整个下拉菜单变为不可用 
              $(this).menu("option","disabled",true);
          } 
          
      });     
      });
</script>
<style type="text/css">
.ui-menu{
width:120px;
}
 li{
   list-style-type: none;
 }
 #mydiv{
 width:120px;
 }
</style>

这里就可以实现下拉列表框的效果,下面的图为常用的参数:

常用参数:
       属性                 类型             说明
    Object icons         属性            设置该组件使用菜单图标
    Boolean disabled        属性            设置菜单不可用
    option(String name)     方法            获取指定选项的值
    expand([event])         方法            打开当前菜单项的子菜单
    focus(event,ui)         事件            当菜单获取焦点或任何菜单项被打开时,触发该事件

menu插件还能实现一种,外部引用的效果,在一个页面通过点击按钮加载数据。。。。

页面上的代码:

<body>
<div>
   <ul id="menu">
        <li><a href="#">系统管理</a></li>
   </ul>
</div>
</body>

<script></script>标签内的代码:

<script type="text/javascript"> $(function(){ $("#menu").menu({ select:function(){ $.get("info.jsp",function(data){ $("#menu").append(data); $("#menu").menu("refresh"); }); } }); }); </script> <style type="text/css"> .ui-menu{ width:120px; } li{ list-style-type: none; } </style>

引用页面的代码:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
     <li><a href="#">市场管理</a></li>
     <li><a href="#">财务管理</a>
        <ul>
          <!-- 这里设置的属性为不可用状态 -->
          <li class="ui-state-disabled"><a href="#">财务部</a></li>
          <li><a href="#">考核部</a></li>
        </ul>
     </li>
     <li><a href="#">产品管理</a>
        <ul>
          <li><a href="#">产品检测部</a>
            <ul>
              <li><a href="#">产品合格</a></li>
              <li><a href="#">产品报废</a></li>
            </ul>
          </li>
          <li><a href="#">产品销售部</a>
            
          </li>
        </ul>
     </li>
   

一个简单的引用就是这样实现了,再也不用为了那么绚丽的页面而羡慕了。。。。。

最后讲解一个我们经常碰到的情况,就是当我们在百度页面或者必应页面搜索资料时,往往你还没打完,下面就会联想出来一些相关的词汇,是不是很智能呢?我们接下来讲解的autocomplete插件就可以实现这个效果。

先来点理论的:

   语法:
       $(selector).autocomplete([settings]); 
       
       常用属性:
           属性                            说明
        String Source 或        用于指定数据来源,类型为String、Array、function
        Array Source 或         String:用于Ajax请求的URL地址,返回Array(JSON格式)
                                Array:即字符串数组 或 JSON数组
        function Source(        function(request, response):
         Object reuqest,        通过request.term获得输入的值(term为默认参数名),
        function response(      response([Array])用来呈现远程数据
            Object data ))                       
                                
        Integer minLength        当输入框内字符串长度达到minLength时,激活autocomplete
        
        Boolean autoFocus        当autocomplete选择菜单弹出时,自动选中第一个
        
        Integer delay            即延迟多少毫秒激活autocomplete
        
        常用事件:
        事件                           说明
       focus(event,ui)             autocomplete的结果列表任意一项获得焦点时触发
                                 ui.item为获得焦点的项
       
       select(event,ui)             autocomplete的结果列表任意一项选中时触发
                                 ui.item为选中的项
       
       change(event,ui)             当值改变时触发
                                 ui.item为选中的项

接下来一个小示例:

邮箱效果:

email 效果
    //准备数组存储域名
      var hosts = ["126.com","gmail.com", "live.com", "hotmail.com", "yahoo.com", "cnblogs.com", "qq.com", "163.com"];
            $("#email").autocomplete({
                autoFocus: true,
                //定义资源函数
                source: function(request, response) {
                    var term = request.term, //request.term为输入的字符串
                        ix = term.indexOf("@"),
                        name = term, // 用户名
                        host = "", // 域名
                        result = []; // 结果

                    result.push(term);
                    if (ix > -1) {
                        name = term.slice(0, ix);
                        host = term.slice(ix + 1);
                    }
                    if (name) {
                        var findedHosts = (host ? $.grep(hosts, function(value) {
                            return value.indexOf(host) > -1;
                        }) : hosts),
                        findedResults = $.map(findedHosts, function(value) {
                            return name + "@" + value; //返回字符串格式
                       });
                        result = result.concat($.makeArray(findedResults));
                    }
                    response(result); //呈现结果
                }
            });
    
    <div><input type="text" id="email"/></div>

在这里解释一下,上面用的我们陌生的方法:

解释:
    grep方法

     使用过滤函数过滤数组元素。
     此函数至少传递两个参数:待过滤数组和过滤函数。
     过滤函数必须返回 true 以保留元素或 false 以删除元素。
     
     
     源码分析:
     grep: function( elems, callback, inv ) {
     var ret = [], retVal;
     inv = !!inv;

    // Go through the array, only saving the items
    // that pass the validator function
        for ( var i = 0, length = elems.length; i < length; i++ ) {
             retVal = !!callback( elems[ i ], i );
             if ( inv !== retVal ) {
                 ret.push( elems[ i ] );
             }
        }

        return ret;
    }
    
    
    makeArray方法

    将类数组对象转换为数组对象。
    类数组对象有 length 属性,其成员索引为 0 至 length - 1。
    实际中此函数在 jQuery 中将自动使用而无需特意转换。
    
    源码分析:
    // results is for internal usage only
        makeArray: function( array, results ) {
           var ret = results || [];

           if ( array != null ) {
                // The window, strings (and functions) also have 'length'
                // Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930
                var type = jQuery.type( array );

                if ( array.length == null || type === "string" || type === "function" || type === "regexp" || jQuery.isWindow( array ) ) {
                    push.call( ret, array );
                } else {
                    jQuery.merge( ret, array );
                }
           }

           return ret;
        },
        
        这里接受两个参数,其中第二个参数是内部使用的,在源码内部经常被调用作为其他方法的支持方法。
        创建一个新数组ret,如果只有一个参数则为空,如果存在第二个参数就把第二个参数赋值给ret,
        在array参数存在的前提下获取其数据类型,如果数据类型为字符串、函数或者正则时或者不存在length属性时,
        则假定array不是数组或者类数组,因为字符串、函数和正则(黑莓系统下)都是有length属性的,
        所以只判断length不准确,如果不是数组或者类数组就直接将第一个参数放入ret的末尾。
        如果通过了则认为是数组或者是类数组,此时调用merge方法将两个数组合并,最后返回ret。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

混合云运维解决方案,支持公有云、私有云、信创云等环境

数字时代&#xff0c;政企业务上云已成为大势所趋。虽然上云可为政企用户带来业务应用部署调度更加灵活、资源利用率更高的优点&#xff0c;但因云平台建设处于不同的阶段&#xff0c;且运转过程中包含大量的、不同类型的业务系统和应用场景&#xff0c;在整体云平台的建设中往…

EtherCAT 伺服控制功能块实现

EtherCAT 是运动控制领域主要的通信协议&#xff0c;开源EtherCAT 主站协议栈 IgH 和SOEM 两个项目&#xff0c;IgH 相对更普及一些&#xff0c;但是它是基于Linux 内核的方式&#xff0c;比SOEM更复杂一些。使用IgH 协议栈编写一个应用程序&#xff0c;控制EtherCAT 伺服电机驱…

ZYNQ_project:uart(odd,even)

概念&#xff1a; UART&#xff08;Universal Asynchronous Receiver-Transmitter&#xff09;&#xff1a;即通用异步收发器&#xff0c;是一种通用串行数据总线&#xff0c;用于异步通信。一般UART接口常指串口。 UART在发送数据时将并行数据转换成串行数据来传输&#xff…

注册表单mvc 含源代码

总结 jsp给我们的ControllerServlet.java,ControllerServlet.java获取参数,信息封装给RegisterFormBean.java的对象看是否符合格式,符合格式再信息封装给UserBean对象,调用Dbutil插入方法查重.]]要创建一个user集合成功跳哪个界面,打印信息注意什么时候要加getsession失败跳哪…

react-router-dom 版本6.18.0中NavLink的api和属性介绍

React Router 是一个基于 React 的路由库&#xff0c;它可以帮助我们在 React 应用中实现页面的切换和路由的管理。而 NavLink 则是 React Router 中的一个组件&#xff0c;它可以帮助我们实现导航栏的样式设置和路由跳转。 在 React Router 版本6.18.0 中&#xff0c;NavLink…

【用unity实现100个游戏之15】开发一个类保卫萝卜的Unity2D塔防游戏3(附项目源码)

文章目录 先看本次实现的最终效果前言绘制炮塔UI炮塔转向敌人生成炮弹旋转我们的子弹对敌人造成伤害&#xff0c;回收子弹自动发射子弹添加攻击间隔显示伤害字体设计通用泛型单例创建更多炮塔升级增加伤害升级缩短攻击间隔添加货币杀死敌人获取金币源码完结 先看本次实现的最终…

epoll协程简述

协程的由来 【协程第二话】协程和IO多路复用更配哦~_哔哩哔哩_bilibili 协程类别:有栈(静态)协程, 无栈(动态协程) 协程epoll 当有需要等待的时候,就切换出去,要用汇编保存这个栈rsp 运行时,要根据协程上下文恢复出这个栈

Beego之Bee工具使用

1、bee工具使用 bee 工具是一个为了协助快速开发 Beego 项目而创建的项目&#xff0c;通过 bee 你可以很容易的进行 Beego 项目的创 建、热编译、开发、测试、和部署。Bee工具可以使用的命令&#xff1a; [rootzsx ~]# bee 2023/02/18 18:17:26.196 [D] init global config…

Java基础笔记

1.数据类型在java语言中包括两种: 第一种:基本数据类型 基本数据类型又可以划分为4大类8小种: 第一类:整数型 byte , short,int, long(没有小数的&#xff09; 第二类:浮点型 float,aouble(带有小数的&#xff09; 第三类:布尔型 boole…

【Rust】快速教程——模块mod与跨文件

前言 道尊&#xff1a;没有办法&#xff0c;你的法力已经消失&#xff0c;我的法力所剩无几&#xff0c;除非咱们重新修行&#xff0c;在这个世界里取得更多法力之后&#xff0c;或许有办法下降。——《拔魔》 \;\\\;\\\; 目录 前言跨文件mod多文件mod 跨文件mod //my_mod.rs…

高能分享:软件测试十大必问面试题(附带答案)

1 介绍之前负责的项目 参考答案&#xff1a;先大概描述一下这个项目是做什么的&#xff08;主要功能&#xff09;&#xff0c;包括哪些模块&#xff0c;是什么架构的&#xff08;B/S、C/S、移动端&#xff1f;&#xff09;&#xff0c;你在其中负责哪些模块的测试。期间经历了几…

Java后端工程师有福啦,CSDN里找到宝藏

目录 一、说明 二、操作步骤 一、说明 CDSN也有系统的java学习资料&#xff0c;有事无事翻翻挺好。 二、操作步骤 1、在CSDN首页顶端左边&#xff0c;点【学习】 2、在【学习】的页面&#xff0c;往下滑&#xff0c;找到【职业路线】 3、java后端工程师【入门版】【进阶版】…

Python基础:输入输出详解-输出字符串格式化

Python中的输入和输出是编程中非常重要的方面。 1. 输入输出简单介绍 1.1 输入方式 Python中的输入可以通过input()函数从键盘键入&#xff0c;也可以通过命令行参数或读取文件的方式获得数据来源。 1&#xff09;input()示例 基本的input()函数&#xff0c;会将用户在终端&…

Unity中Shader纹理的环绕方式

文章目录 前言一、修改环绕方式前的设置准备二、在纹理的设置面板可以修改环绕方式三、在Shader中&#xff0c;实现纹理的环绕方式切换1、在属性面板定义一个和纹理面板一样的纹理环绕方式下拉框2、在Pass中&#xff0c;定义枚举对应的变体3、在片元着色器中&#xff0c;纹理采…

腾讯云服务器收费标准是多少?腾讯云服务器收费标准表

你是否曾被繁琐复杂的服务器租赁费用搞得头昏脑胀&#xff1f;看着一堆参数和计费方式却毫无头绪&#xff1f;别担心&#xff0c;这篇文章就来帮你解决这个问题&#xff01;我们今天就来揭秘一下腾讯云服务器的收费标准&#xff0c;让大家轻松明白地知道如何租用腾讯云服务器。…

2023.11.17-hive调优的常见方式

目录 0.设置hive参数 1.数据压缩 2.hive数据存储格式 3.fetch抓取策略 4.本地模式 5.join优化操作 6.SQL优化(列裁剪,分区裁剪,map端聚合,count(distinct),笛卡尔积) 6.1 列裁剪: 6.2 分区裁剪: 6.3 map端聚合(group by): 6.4 count(distinct): 6.5 笛卡尔积: 7…

Go 语言变量类型和声明详解

在Go中&#xff0c;有不同的变量类型&#xff0c;例如&#xff1a; int 存储整数&#xff08;整数&#xff09;&#xff0c;例如123或-123float32 存储浮点数字&#xff0c;带小数&#xff0c;例如19.99或-19.99string - 存储文本&#xff0c;例如“ Hello World”。字符串值用…

2024年山东省职业院校技能大赛中职组“网络安全”赛项竞赛试题-C

2024年山东省职业院校技能大赛中职组 “网络安全”赛项竞赛试题-C 一、竞赛时间 总计&#xff1a;360分钟 二、竞赛阶段 竞赛阶段 任务阶段 竞赛任务 竞赛时间 分值 A、B模块 A-1 登录安全加固 180分钟 200分 A-2 本地安全策略设置 A-3 流量完整性保护 A-4 …

技术分享 | 如何写好测试用例?

对于软件测试工程师来说&#xff0c;设计测试用例和提交缺陷报告是最基本的职业技能。是非常重要的部分。一个好的测试用例能够指示测试人员如何对软件进行测试。在这篇文章中&#xff0c;我们将介绍测试用例设计常用的几种方法&#xff0c;以及如何编写高效的测试用例。 ## 一…

337. 打家劫舍 III

小偷又发现了一个新的可行窃的地区。这个地区只有一个入口&#xff0c;我们称之为 root 。 除了 root 之外&#xff0c;每栋房子有且只有一个“父“房子与之相连。一番侦察之后&#xff0c;聪明的小偷意识到“这个地方的所有房屋的排列类似于一棵二叉树”。 如果 两个直接相连…