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.rhkb.cn/news/195301.html

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

相关文章

Ubuntu 下C++数字雨

以前写过一个Window下的数字雨&#xff0c;像黑客帝国里那样的01数字&#xff0c;现在补充一版Linux下的。使用了curses库&#xff0c;安装方法与使用方法参照 Linux下curses函数库的详细介绍_libcurses库-CSDN博客 5-linux学习笔记之-----curses-CSDN博客 效果如下&#xf…

ERR_PNPM_INVALID_WORKSPACE_CONFIGURATION packages field missing or empty

vue执行 pnpm install命令时&#xff0c;报 ERR_PNPM_INVALID_WORKSPACE_CONFIGURATION  packages field missing or empty错&#xff0c;在网上查询了很久&#xff0c;也没有传出来结果&#xff0c;最后发现是pnpm的版本不对引起的。 我先执行的是npm install -g pnpm&…

实例解释遇到前端报错时如何排查问题

前端页面报错&#xff1a; 1、页面报错500&#xff0c;首先我们可以知道是服务端的问题&#xff0c;需要去看下服务端的报错信息&#xff1a; 2、首先我们查看下前端是否给后端传了id: 我们可以看到接口是把ID返回了&#xff0c;就需要再看下p_id是什么情况了。 3、我们再次请…

数字艺术藏品软件的独特创新与未来趋势

随着科技的飞速发展&#xff0c;数字艺术藏品软件逐渐崭露头角&#xff0c;为艺术爱好者们提供了一个全新的收藏方式。这类软件不仅为艺术家提供了展示作品的平台&#xff0c;也为收藏家们提供了收藏和分享艺术品的渠道。本文将从开发思路、技术实现、市场前景等方面探讨数字艺…

Postman批量运行用例

近期在复习Postman的基础知识&#xff0c;在小破站上跟着百里老师系统复习了一遍&#xff0c;也做了一些笔记&#xff0c;希望可以给大家一点点启发。 一&#xff09;注意点 有上传文件的接口&#xff0c;需要做如下设置&#xff1a; 1、打开能读取外部文件的开关 2、把需要…

2023数字科技生态大会-数字安全论坛 学习笔记

监管合规->价值创造的方向&#xff0c;在安全领域的发展方向-安全运营服务型 ICT->数字->数据 数字安全&#xff1a;网络安全数据安全 传统信息化以计算为核心&#xff0c;数字化以数据为核心 数字安全技术发展十大趋势&#xff1a; 一、 数字安全技术政策环境将不…

HarmonyOS 实战项目

引言 本章将介绍如何在 HarmonyOS 上进行实际项目开发。我们将从项目需求分析开始&#xff0c;逐步完成项目的设计、开发、测试和上线过程。 1. 项目需求分析 项目需求分析是项目开发的关键阶段之一&#xff0c;它有助于确定项目的范围、目标和功能&#xff0c;为项目的设计和开…

【Android】画面卡顿优化列表流畅度四之Glide几个常用参数设置

好像是一年前快两年了&#xff0c;笔者解析过glide的源码&#xff0c;也是因为觉得自己熟悉一些&#xff0c;也就没太关注过项目里glide的具体使用对当前业务的影响&#xff1b;主要是自负&#xff0c;还有就是真没有碰到过这样的数据加载情况。暴露了经验还是不太足够 有兴趣的…

在线协作工具都有哪些?推荐这10款

如今&#xff0c;互联网的快速发展不仅改变了我们的生活方式&#xff0c;也改变了我们的工作方式。 特别是对于一些与产品设计相关的公司或团体&#xff0c;网络不仅为其设计提供了稳定的资源和灵感&#xff0c;而且为成员之间的沟通和合作提供了更大的便利。 如果您也需要为…

ke11介绍本地,会话存储

代码顺序: 1.设置input,捕获input如果有多个用属性选择符例如 input[typefile]点击事件.向我们的本地存储设置键值对 2.在点击事件外面设置本地存储表示初始化的值.点击上面的事件才能修改我们想修改的值 会话(session)浏览a数据可以写到本地硬盘,关闭页面数据就没了 本地(…

基于SSM的大学餐厅菜品推荐和点评系统设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;Vue 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#xff1a;是 目录…

基于数据库(MySQL)与缓存(Redis)实现分布式锁

分布式锁 分布式锁&#xff1a;分布式锁是在分布式的情况下实现互斥类型的一种锁 实现分布式锁需要满足的五个条件 可见性&#xff1a;多个进程都能看到结果互斥性&#xff1a;只允许一个持有锁的对象的进入临界资源可用性&#xff1a;无论何时都要保证锁服务的可用性&#x…

怎样备份电脑文件比较安全

域智盾软件是一款功能强大的电脑监控软件&#xff0c;它不仅具备实时屏幕监控、行为审计等功能&#xff0c;还能够对电脑文件进行备份和管理。下面将介绍域智盾软件如何备份电脑文件&#xff0c;以确保数据安全。 1、开启文档备份功能 部署后台&#xff0c;然后点击文档安全&a…

无需API实现MySQL与巨量引擎的对接

通过数环通&#xff0c;您可以使用不到几分钟的时间即可实现MySQL与巨量引擎的对接与集成&#xff0c;从而高效实现工作流程自动化&#xff0c;降本增效&#xff01; 1.产品介绍 巨量引擎是字节跳动旗下的营销服务品牌&#xff0c;它整合了字节跳动旗下的产品及海量内容&#…

Diffusion Models CLIP

Introduction to Diffusion Models 生成模型 主要指的是无监督学习中的生成模型&#xff0c;在无监督学习中的主要任务是让机器学习给定的样本&#xff0c;然后生成一些新的东西出来。比如&#xff1a;给机器看一些图片&#xff0c;能够生成一些新的图片出来&#xff0c;给机器…

Jmeter进行压力测试不为人知的秘密

jmeter是apache公司基于java开发的一款开源压力测试工具&#xff0c;体积小&#xff0c;功能全&#xff0c;使用方便&#xff0c;是一个比较轻量级的测试工具&#xff0c;使用起来非常简单。因为jmeter是java开发的&#xff0c;所以运行的时候必须先要安装jdk才可以。jmeter是免…

窗口管理工具 Mosaic mac中文版功能特点

MosAIc mac是一种窗口管理工具&#xff0c;可帮助您在计算机屏幕上有效地组织和管理多个应用程序窗口。它提供了一种直观的方式来调整和排列窗口&#xff0c;以最大化工作效率。 MosAIc mac窗口管理软件功能和特点 窗口布局&#xff1a;MosAIc允许您选择不同的窗口布局&#x…

跟李沐学AI-深度学习课程00-03【预告、课程安排、深度学习介绍、安装】

目录 00 预告 01 课程安排 02 深度学习介绍 03 安装 本地安装 04 数据操作数据预处理 数据操作 数据类型 创建数组 访问元素 数据操作实现 入门 运算符 广播机制 索引和切片 节省内存 转换为其他Python对象 数据预处理实现 读取数据集 处理缺失值 转换为张…

【Linux】环境变量--PATH环境变量/环境变量的操作/命令行参数

文章目录 一、PATH环境变量1.什么是PATH环境变量2.如何添加PATH环境变量3.系统中的其他环境变量4.环境变量的来源 二、环境变量的操作1.设置环境变量2.通过getenv获取环境变量3.环境变量的意义 三、命令行参数 一、PATH环境变量 1.什么是PATH环境变量 这里我们先提出一个问题…

Ubuntu22.04离线安装uwsgi问题记录

GCC4.8安装 1、报错信息1&#xff1a; 由于缺少gcc4.8环境导致的无法安装uwsgi 解决方案&#xff1a; 离线安装GCC4.8环境, GCC4.8.5离线安装步骤如下&#xff1a; 1、下载gcc的离线安装包及其依赖包&#xff0c;链接如下&#xff1a; https://download.csdn.net/download/…