第一百七十六节,jQuery,插件
jQuery,插件
学习要点:
1.插件概述
2.验证插件
3.自动完成插件
4.自定义插件
插件(Plugin)也成为 jQuery 扩展(Extension),是一种遵循一定规范的应用程序接口编 写出来的程序。目前 jQuery 插件已超过几千种,由来自世界各地的开发者共同编写、验证 和完善。而对于 jQuery 开发者而言,直接使用这些插件将快速稳定架构系统,节约项目成 本。
一.插件概述
插件是以 jQuery 的核心代码为基础,编写出复合一定规范的应用程序。也就是说,插 件也是 jQuery 代码,通过 js 文件引入的方式植入即可。 插件的种类很多,主要大致可以分为:UI 类、表单及验证类、输入类、特效类、Ajax 类、滑动类、图形图像类、导航类、综合工具类、动画类等等。
引入插件是需要一定步骤的,基本如下:
1.必须先引入 jquery.js 文件,而且在所有插件之前引入;
2.引入插件;
3.引入插件的周边,比如皮肤、中文包等。
二.验证插件
Validate.js 是 jQuery 比较优秀的表单验证插件之一。这个插件有两个 js 文件,一个是主 文件,一个是中文包文件。使用的时候,可以使用 min 版本;在这里,为了教学,我们未 压缩版本。 验证插件包含的两个文件分别为:jquery.validate.js 和 jquery.validate.messages_zh.js。
html代码
<form>
<p>用 户 名:<input type="text"/>
*</p>
<p>电子邮件:<input type="text" name="email"/> *</p>
<p>网 址:<input type="text" name="url"/></p>
<p><input type="submit" value="提交"/></p>
</form>
第一步,引入jquery.js 文件
第二步,引入jquery.validate.js验证插件
第三步,引入jquery.validate.messages_zh.js 验证插件中文语言包,因为原本是英文的
第四步,写自己的js文件加载验证
//获取表单,执行表单验证插件
$('form').validate(); //执行表单验证插件方法
执行表单验证插件方法后
class="required"验证表单指定元素不能为空
只要在表单元素里不能为空的元素上加上class="required",提交表单时插件就会自动检测class="required"的表单值不能为空
minlength="2"验证表单指定元素值不能小于两位
只要在表单元素里值不能小于两位的元素上加上属性minlength="2",属性值就是要检测的长度,设置后会自动检测
class="email"验证邮箱地址的合法性
只要在表单电子邮件元素加上class="email",就会自动检测电子邮件的合法性
class="url"验证输入网址的元素,网址的合法性,网址还必须包含http
只要在表单输入网址的元素加上class="url",就会自动检测网址的合法性
加上了各种验证属性后html
<form>
<p>用 户 名:<input type="text" class="required" name="username" minlength="2"/>
*</p>
<p>电子邮件:<input type="text" class="required email" name="email"/> *</p>
<p>网 址:<input type="text" class="url" name="url"/></p>
<p><input type="submit" value="提交"/></p>
</form>
注意:本章就简单的了解插件的使用,并不针对某个功能的插件进行详细讲解。比如验 证插件 validate.js,它类似与 jQuery 一样,同样具有各种操作方法和功能,需要进行类似手 册一样的查询和讲解。所以,我们会在项目中再去详细讲解使用到的插件。
三.自定义插件
前面我们使用了别人提供好的插件,使用起来非常的方便。如果市面上找不到自己满意 的插件,并且想自己封装一个插件提供给别人使用。那么就需要自己编写一个 jQuery 插件 了。
按照功能分类,插件的形式可以分为一下三类:
1.封装对象方法的插件;(也就是基于某个 DOM 元素的 jQuery 对象,局部性)
2.封装全局函数的插件;(全局性的封装)
3.选择器插件。(类似与.find())
经过日积月累的插件开发,开发者逐步约定了一些基本要点,以解决各种因为插件导致 的冲突、错误等问题,包括如下:
1.插件名推荐使用 jquery.[插件名].js,以免和其他 js 文件或者其他库相冲突;
2.局部对象附加 jquery.fn 对象上,全局函数附加在 jquery 上;
3.插件内部,this 指向是当前的局部对象;
4.可以通过 this.each 来遍历所有元素;
5.所有的方法或插件,必须用分号结尾,避免出现问题;
6.插件应该返回的是 jQuery 对象,以保证可链式连缀;
7.避免插件内部使用$,如果要使用,请传递 jQuery 进去
按照以上的要点,
我们开发一个局部或全局的导航菜单的插件。只要导航的<li>标签内部嵌入要下拉的<ul>,并且 class 为 nav,即可完成下拉菜单。
html
<ul class="list">
<li>导航列表
<ul class="nav">
<li>导航列表 1</li>
<li>导航列表 1</li>
<li>导航列表 1</li>
<li>导航列表 1</li>
<li>导航列表 1</li>
<li>导航列表 1</li>
</ul>
</li>
<li>导航列表
<ul class="nav">
<li>导航列表 2</li>
<li>导航列表 2</li>
<li>导航列表 2</li>
<li>导航列表 2</li>
<li>导航列表 2</li>
<li>导航列表 2</li>
</ul>
</li>
</ul>
封装全局插件方法jquery.nav.js
extend()方法,用jQuery的extend()方法,extend()给jQuery拓展一个全局方法,接受一个参数,参数是一个对象
//自定义插件
//;防止上面其他文件的代码缺少符号出错
;(function ($) { //自我执行函数
//全局封装,用于全局也就是整个页面
//全局封装,用jQuery的extend()方法,extend()给jQuery拓展一个全局方法,接受一个参数,参数是一个对象
//对象里以键值对方式传值,第一个属性名称也就是要拓展方法名称,第二个参数是函数,函数里就是执行代码
$.extend({
'nav': function (color) { //还可以接受参数来操作
$('.nav').css({
'list-style': 'none',
'margin': 0,
'padding': 0,
'display': 'none',
'color': color
});
$('.nav').parent().hover(function () {
$(this).find('.nav').slideDown('normal');
}, function () {
$(this).find('.nav').stop().slideUp('normal');
});
return this
}
});
})(jQuery); //将jQuery传进去
前台调用
$.nav('#ffec1c');
注意:全局方法是用于全局的,也就是整个页面,是在$上使用的,如:$.nav('#ffec1c');
封装局部插件方法jquery.nav.js
fn.extend()方法,用jQuery的fn.extend()方法,fn.extend()给jQuery拓展一个局部方法,接受一个参数,参数是一个对象
//自定义插件
//;防止上面其他文件的代码缺少符号出错
;(function ($) { //自我执行函数
//局部封装,用于局部,如$('.list li').eq(0).nav();
//局部封装,用jQuery的fn.extend()方法,fn.extend()给jQuery拓展一个局部方法,接受一个参数,参数是一个对象
//对象里以键值对方式传值,第一个属性名称也就是要拓展方法名称,第二个参数是函数,函数里就是执行代码
$.fn.extend({
'nav': function () { //还可以接受参数来操作
$(this).find('.nav').css({ //注意是局部的,所以要用this,this代表连缀前面指定的元素本身
'list-style': 'none',
'margin': 0,
'padding': 0,
'display': 'none'
});
$(this).hover(function () {
$(this).find('.nav').slideDown('normal');
}, function () {
$(this).find('.nav').stop().slideUp('normal');
});
return this;
}
});
})(jQuery); //将jQuery传进去
前台调用
$('.list li').eq(0).nav();
注意:局部方法是用于某一个指定元素的,在指定元素上使用,如:$('.list li').eq(0).nav();
局部方法里的this代表连缀前面指定的元素本身,如上列this代表,class为list 下面的li 第一个
第一百七十六节,jQuery,插件的更多相关文章
- 第一百二十六节,JavaScript,XPath操作xml节点
第一百二十六节,JavaScript,XPath操作xml节点 学习要点: 1.IE中的XPath 2.W3C中的XPath 3.XPath跨浏览器兼容 XPath是一种节点查找手段,对比之前使用标准 ...
- 第三百七十六节,Django+Xadmin打造上线标准的在线教育平台—创建用户操作app,在models.py文件生成5张表,用户咨询表、课程评论表、用户收藏表、用户消息表、用户学习表
第三百七十六节,Django+Xadmin打造上线标准的在线教育平台—创建用户操作app,在models.py文件生成5张表,用户咨询表.课程评论表.用户收藏表.用户消息表.用户学习表 创建名称为ap ...
- 第一百八十六节,jQuery,验证表单插件,Ajax 表单插件,验证和提交表单
jQuery,验证表单插件,Ajax 表单插件,验证和提交表单 HTML <form id="reg" method="post" action=&quo ...
- 第一百七十五节,jQuery,工具函数
jQuery,工具函数 学习要点: 1.字符串操作 2.数组和对象操作 3.测试操作 4.URL 操作 5.浏览器检测 6.其他操作 工具函数是指直接依附于 jQuery 对象,针对 jQuery 对 ...
- 第一百七十四节,jQuery,Ajax进阶
jQuery,Ajax进阶 学习要点: 1.加载请求 2.错误处理 3.请求全局事件 4.JSON 和 JSONP 5.jqXHR 对象 在 Ajax 课程中,我们了解了最基本的异步处理方式.本章,我 ...
- 第一百三十六节,JavaScript,封装库--事件绑定
JavaScript,封装库--事件绑定 在函数库添加两个函数 添加事件绑定函数 删除事件绑定函数 添加事件绑定函数 /** addEvent()函数库函数,跨浏览器添加事件绑定,注意:传入事件名称时 ...
- 第一百七十九节,jQuery-UI,知问前端--按钮 UI-图标
jQuery-UI,知问前端--按钮 UI 学习要点: 1.使用 button 按钮 2.修改 button 样式 3.button()方法的属性 4.button('action', param) ...
- 第二百七十六节,MySQL数据库,【显示、创建、选定、删除数据库】,【用户管理、对用户增删改查以及授权】
MySQL数据库,[显示.创建.选定.删除数据库],[用户管理.对用户增删改查以及授权] 1.显示数据库 SHOW DATABASES;显示数据库 SHOW DATABASES; mysql - 用户 ...
- 第一百五十六节,封装库--JavaScript,延迟加载
封装库--JavaScript,延迟加载 延迟加载的好处,就是在浏览器视窗外的图片,不加载,拖动鼠标到浏览器视窗内后加载,用户不看的图片就不用加载,可以减少服务器大量流量 将图片的src地址用一张统一 ...
随机推荐
- [bug] VS2013 Brower Link和Aspnetpager引发的问题分析
概述 在ie11上浏览页面的时候,突然发现在使用Aspnetpager的页面会有一个bug. 开发环境:win8.1+vs2013+ie11. 项目描述:这个问题出现在内容页中,应用了母版页. 解决方 ...
- 自建Saltstack的repo软件源仓库
因为Saltstack自己的repo源是在国外,在国内服务器yum安装Saltstack的时候下载软件包就非常慢,很多情况下还经常下载失败,其实软件包总大小只有10M左右,如果这样安装多台minion ...
- HBase集群的安装部署
HBase的安装是是建立在hadoop和zookeeper集群之上的 安装的步骤跟伪分布式差不多,只是修改了一些配置文件 解压缩.重命名.设置环境变量 把hbase-0.94.2-security.t ...
- builder pattern
design patterns 结合书本和这个网站的这个系列的文章来看: https://www.tutorialspoint.com/design_pattern/builder_pattern.h ...
- Required MultipartFile parameter 'file' is not present error
<input type=“file”> 中的name 与id 属性 与 addbanner(@RequestParam("file") MultipartFile ...
- MySQL Win7 64位 下载、安装与配置图文教程
MySQL是目前十分流行的一种关系型数据库管理系统.官网推出的安装包有两种格式,分别是:ZIP格式和MSI格式.其中MSI格式的可以直接点击安装,按照它给出的安装提示进行安装,一般MySQL将会安装在 ...
- Bat 替换文件中的字符串
echo off setlocal enabledelayedexpansion set "file=Config\__Config\server_config_common.xml&quo ...
- 使用Nginx+uWSGI+Django方法部署Django程序(下)
在上一篇文章<五步教你实现使用Nginx+uWSGI+Django方法部署Django程序(上)>中,阐述了如何只使用uWSGI来部署Django程序. 当然,单单只有uWSGI是不够的, ...
- centos下hadoop的安装
hadoop的安装不难,可是须要做不少的准备工作. 一.JDK 须要先安装jdk.centos下能够直接通过yum install java-1.6.0-openjdk来安装.不同公布版的安装 ...
- Java 遍历一个对象的属性 将非空属性赋值给另一个对象
//将origin属性注入到destination中 public <T> void mergeObject(T origin, T destination) { if (origin = ...