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({//是否自动打开  默认为trueautoOpen: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          属性          设置组件是否使用模式窗口。默认为falseclose()                  方法          执行关闭对话框操作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、functionArray 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时,激活autocompleteBoolean 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 functionfor ( 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 onlymakeArray: 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 #6930var 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。

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

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

相关文章

无需公众号实现微信JSSDK分享卡片!Safari浏览器分享到微信自动成卡片!

摘要 要在微信分享卡片&#xff0c;需要接入微信自家的JSSDK&#xff0c;比较麻烦&#xff0c;还需要认证公众号&#xff0c;但是如果你没有这样的条件&#xff0c;那么你也可以试试使用iOS的Safari浏览器轻松实现&#xff0c;只需要在html中加入3个meta即可。 代码 <!DO…

初始MySQL(七)(MySQL表类型和存储引擎,MySQL视图,MySQL用户管理)

目录 MySQL表类型和存储引擎 MyISAM MEMORY MySQL视图 我们先说说视图的是啥? 视图的一些使用细节 MySQL用户管理 原因 常见操作 MySQL表类型和存储引擎 -- 查看所有的存储引擎 SHOW ENGINES 我们常见的表有MyISAM InnoDB MEMORY 1.MyISAM不支持事务,也不支持外…

pytorch 安装 2023年

pytorch网址&#xff1a;https://pytorch.org/get-started/locally/ conda install pytorch torchvision torchaudio pytorch-cuda11.8 -c pytorch -c nvidia我在自己电脑上用这个pip命令完全安装不了&#xff0c;只能用conda安装。复制上面提供的命令&#xff0c;在cmd中直接运…

C++ 多线程使用

使用多线程思考 若程序中存在耗时操作&#xff0c;且耗时操作数据不与其他发生交互&#xff0c;如下载数据&#xff0c;那么直接进行线程操作即可。如果耗时操作需要进行数据交互&#xff0c;而且耗时操作能分成并行的两部分或多部分&#xff0c;那么也可以进行多线程进行加速…

VIM去掉utf-8 bom头

Windows系统的txt文件在使用utf-8编码保存时会默认在文件开头插入三个不可见的字符&#xff08;0xEF 0xBB 0xBF&#xff09;称为BOM头 BOM头文件 0.加上BOM标记&#xff1a; :set bomb 1.查询当前UTF-8编码的文件是否有BOM标记&#xff1a; :set bomb? :set bomb? 2.BOM头:文…

Java中for、foreach、stream区别和性能比较

文章目录 性能比较区别使用方式和行为 性能比较 最终总结&#xff1a;如果数据在1万以内的话&#xff0c;for循环效率高于foreach和stream&#xff1b;如果数据量在10万的时候&#xff0c;stream效率最高&#xff0c;其次是foreach,最后是for。另外需要注意的是如果数据达到10…

使用Python的requests库模拟爬取地图商铺信息

目录 引言 一、了解目标网站 二、安装requests库 三、发送GET请求 四、解析响应内容 五、处理异常和数据清洗 六、数据存储和分析 七、数据分析和可视化 八、注意事项和最佳实践 总结 引言 随着互联网的快速发展&#xff0c;网络爬虫技术已经成为获取数据的重要手段…

交换排序详讲:冒泡排序+快速排序(多方法+思路+图解+代码)

文章目录 交换排序一.冒泡排序二.快速排序1.挖坑法2.Hoare法 交换排序 根据序列中两个记录键值的比较结果来对换这两个记录在序列中的位置将键值较大的记录向序列的尾部移动&#xff0c;键值较小的记录向序列的前部移动。 一.冒泡排序 /*** 冒泡排序* 时间复杂度 n^2* 空间复杂…

springBoot集成websocket实时消息推送

springBoot集成websocket实时消息推送 WebSocket是一种在Web应用程序中实现双向通信的协议。它允许在客户端和服务器之间建立持久性的连接&#xff0c;并支持双向数据传输&#xff0c;实现了实时、低延迟的通信。 &#x1f4cd;常见的消息推送方法 WebSocket&#xff1a;通过使…

常见面试题-HashMap源码

了解 HashMap 源码吗&#xff1f; 参考文章&#xff1a;https://juejin.cn/post/6844903682664824845 https://blog.51cto.com/u_15344989/3655921 以下均为 jdk1.8 的 HashMap 讲解 首先&#xff0c;HashMap 的底层结构了解吗&#xff1f; 底层结构为&#xff1a;数组 链…

redis常见问题及解决方案

缓存预热 定义 缓存预热是一种优化方案&#xff0c;它可以提高用户的使用体验。 缓存预热是指在系统启动的时候&#xff0c;先把查询结果预存到缓存中&#xff0c;以便用户后面查询时可以直接从缓存中读取&#xff0c;节省用户等待时间 实现思路 把需要缓存的方法写在初始化方…

【MySQL】聚合函数:汇总、分组数据

文章目录 学习目标MAX()、MIN()、AVG()、SUM()、COUNT()COUNT(*) 得到所有记录条目DISTINCT去重练习1&#xff08;使用UNION &#xff0c; SUM&#xff0c; BETEEN AND&#xff09;GROUP BY子句练习2&#xff08;使用sum&#xff0c;group by&#xff0c; join on&#xff0c; …

S25FL256S介绍及FPGA实现思路

本文介绍 S25FL256S 这款 FLASH 芯片&#xff0c;并进行 FPGA 读写控制的实现&#xff08;编程思路及注意事项&#xff09;。 文章目录 S25FL-S 介绍管脚功能说明SPI 时钟模式SDRDDR 工作模式FLASH存储阵列&#xff08;地址空间映射&#xff09;常用寄存器及相关指令Status Reg…

Stable Diffusion WebUI使用AnimateDiff插件生成动画

AnimateDiff 可以针对各个模型生成的图片&#xff0c;一键生成对应的动图。 配置要求 GPU显存建议12G以上&#xff0c;在xformers或者sdp优化下显存要求至少6G以上。 要开启sdp优化&#xff0c;在启动参数加上--sdp-no-mem-attention 实际的显存使用量取决于图像大小&#…

毫米波雷达模块的目标检测与跟踪

毫米波雷达技术在目标检测与跟踪方面具有独特的优势&#xff0c;其高精度、不受光照影响等特点使其在汽车、军事、工业等领域广泛应用。本文深入探讨毫米波雷达模块在目标检测与跟踪方面的研究现状、关键技术以及未来发展方向。 随着科技的不断进步&#xff0c;毫米波雷达技术在…

硬件测试与EMC测试到底测些啥?

今天说一下个人的经验之谈&#xff0c;主要偏硬件测试一些的东西。 嵌入式主要分为软件和硬件&#xff0c;但是想要做好一个产品只是做出来还不行&#xff0c;还需要最后的验证&#xff0c;即测试了。 嵌入式行业我接触到的主要就是嵌入式软件工程师、嵌入式硬件工程师…

Nginx 修改server_name后无法访问

问题&#xff1a; 在nginx.conf配置中, server_name 为 localhost 时可以正常访问&#xff0c;但改成自定义的域名后无法访问 解决方法&#xff1a; - Window系统 修改本地hosts文件&#xff0c;一般路径在&#xff1a;C:\Windows\System32\drivers\etc\hosts 在文件最后…

快速弄懂C++中的this指针

作用&#xff1a; 防止在定义类的时候出现同名变量&#xff08;如&#xff1a;定义了一个私有变量&#xff0c;在共有域中用一个方法对私有变量进行了赋值&#xff0c;且赋值的变量与私有域变量同名&#xff0c;此时只有使用this指针才能进行赋值&#xff09;能够在定义的类内…

【解决】使用Element-Plus icon图标不显示

使用Element-Plus icon图标不显示的解决方案 博主环境&#xff1a;Vue3 TypeScript 已经安装&#xff1a;element-plus/icons-vue 就是不显示图标&#xff0c;但也不报错 我的解决方法&#xff1a; 根据官网指引&#xff0c;在main.ts&#xff08;如果是JavaScript就是main.…

目标检测—YOLO系列(二 ) 全面解读论文与复现代码YOLOv1 PyTorch

精读论文 前言 从这篇开始&#xff0c;我们将进入YOLO的学习。YOLO是目前比较流行的目标检测算法&#xff0c;速度快且结构简单&#xff0c;其他的目标检测算法如RCNN系列&#xff0c;以后有时间的话再介绍。 本文主要介绍的是YOLOV1&#xff0c;这是由以Joseph Redmon为首的…