插件(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 内容

<scripttype="text/javascript"src="jquery.validate.js"></script>
<scripttype="text/javascript"src="jquery.validate.messages_zh.js"></script>
<form>
<p>用 户 名:<inputtype="text"class="required"name="username"minlength="2"/>
*</p>
<p>电子邮件:<inputtype="text"class="requiredemail"name="email"/>
*</p>
<p>网 址:<inputtype="text"class="url"name="url"/></p>
<p><inputtype="submit"value="提交"/></p>
</form>

  //jQuery 代码

$(function(){
$('form').validate();
});

  只要通过 form 元素的 jQuery 对象调用 validate()方法,就可以实现“必填”、 “不能小于 两位”、 “电子邮件不正确”、“网址不正确”等验证效果。除了 js 端的 validate()方法调用, 表单处也需要相应设置才能最终得到验证效果。

1.必填项:在表单设置 class="required";

2.不得小于两位:在表单设置 minlength="2";

3.电子邮件:在表单中设置 class="email";

4.网址:在表单中设置 class="url"。

注意:本章就简单的了解插件的使用,并不针对某个功能的插件进行详细讲解。比如验 证插件 validate.js,它类似与 jQuery 一样,同样具有各种操作方法和功能,需要进行类似手 册一样的查询和讲解。所以,我们会在项目中再去详细讲解使用到的插件。

三.自动完成插件

所谓自动完成,就是当用户输入部分字符的时候,智能的搜索出包含字符的全部内容。 比如:输入 a,把匹配的内容列表展示出来。

//HTML 内容

<scripttype="text/javascript"src="jquery.autocomplete.js"></script>
<scripttype="text/javascript"src="jquery-migrate-1.2.1.js"></script>
<linkrel="stylesheet"href="jquery.autocomplete.css"type="text/css"/>

  //jQuery 代码

varuser=['about','family', 'but', 'black'];
$('forminput[name=username]').autocomplete(user,{
minChars:0 //双击显示全部数据
});

  

注意:这个自动完成插件使用的 jQuery 版本较老,用了一些已被新版本的 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 部分

<ulclass="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 部分 ;
(function($){
$.fn.extend({
'nav':function(color){
$(this).find('.nav').css({
listStyle:'none',
margin:0,
padding:0,
display:'none',
color:color
}); $(this).find('.nav').parent().hover(function(){
$(this).find('.nav').slideDown('normal');
},function(){
$(this).find('.nav').stop().slideUp('normal');
});
returnthis;
}
});
})(jQuery);

  此教程来源于北风网

20151213Jquery学习笔记--插件的更多相关文章

  1. bootstrap学习笔记 插件概述

    Bootstrap插件概览 在前面布局组件章节中所讨论的组件仅仅是个开始.Bootstrap自带的12种jQuery插件,扩展了功能,可以给站点添加更多的互动.即使您不是一名高级的js开发人员, 你也 ...

  2. kettle学习笔记——插件的安装与使用

    一.概述 暂略 二.ODPS插件 https://yq.aliyun.com/articles/68911

  3. Dynamic CRM 2013学习笔记(一)插件输入实体参数解析

      1. 问题描述 最近新建了一个post事件的插件,传入的参数处理如下: 1: if (context.InputParameters.Contains("Target") &a ...

  4. Dynamic CRM 2013学习笔记(二)插件基本用法及调试

      插件是可与 Microsoft Dynamics CRM 2013 和 Microsoft Dynamics CRM Online 集成的自定义业务逻辑(代码),用于修改或增加平台的标准行为.也可 ...

  5. Dynamic CRM 2013学习笔记(四)单据编号及插件批量注册工具

    基本上每个实体form上都会有单据编号,而且不同的实体编号要求还不太一样,这时就需要一个通用的单据编号插件,可配置以应对不同的需求. 下面简单介绍下实现步骤: 1. 创建二个实体,以保存各实体所要求的 ...

  6. Dynamic CRM 2013学习笔记(十二)实现子表合计(汇总,求和)功能的通用插件

    上一篇 Dynamic CRM 2013学习笔记(十一)利用Javascript实现子表合计(汇总,求和)功能 , 介绍了如何用js来实现子表合计功能,这种方法要求在各个表单上添加js方法,如果有很多 ...

  7. kubernetes CSI 插件机制学习笔记

    前言 最近在极客时间订阅了kubernetes的专栏,这篇文章是想记录一下自己学习 CSI 插件机制 (container-storage-interface) 的过程,加深一下记忆. 准备工作 老师 ...

  8. elasticsearch学习笔记——相关插件和使用场景

    logstash-input-jdbc学习 ES(elasticsearch缩写)的一大优点就是开源,插件众多.所以扩展起来非常的方便,这也造成了它的生态系统越来越强大.这种开源分享的思想真是与天朝格 ...

  9. python3.4学习笔记(五) IDLE显示行号问题,插件安装和其他开发工具介绍

    python3.4学习笔记(五) IDLE显示行号问题,插件安装和其他开发工具介绍 IDLE默认不能显示行号,使用ALT+G 跳到对应行号,在右下角有显示光标所在行.列.pycharm免费社区版.Su ...

随机推荐

  1. BrnMall多店版网上商城正式发布

    前些日子一直忙于多店版网上商城系统BrnMall的开发,工作比较多,所以博客断了.这几天项目完成了,时间比较自由,所以把这段时间总结的一些关于单店版BrnShop和多店版BrnMall区别写下来,希望 ...

  2. 如何使用eclipse进行嵌入式Linux的开发

    如何使用eclipse进行嵌入式Linux的开发 作者:曾宏安,华清远见嵌入式学院高级讲师. 如何使用eclipse进行嵌入式Linux的开发 习惯了在windows环境下开发的程序员在转到Linux ...

  3. [liu yanling]规范软件测试流程

    测试计划 做任何事情都会有输入输出,对于测试过程我们可以把输入理解为测试计划.测试环境准备.测试工具的选择等等,输出可以理解为测试结果.测试用例设计即可以理解为以测试计划为输入的输出,也可以理解为以测 ...

  4. curl检查远程文件是否存在

    size_t processdata(void *buffer, size_t size, size_t nmemb, void *user_p) { //写一个空的写函数 return nmemb; ...

  5. 非递归实现先序遍历 java leecode 提交

    写完才知道自己学习都是似是而非啊,大家可以也在leecode上提交代码,纯手写,离开eclipse第一种方式:数据结构书上的,使用栈大概思路.1.不断将根节点的左孩子的左孩子直到为空,在这个过程入栈. ...

  6. ArrayLLis 线程不安 实验

    这段代码演示了ArrayList的线程不安全,我让3个线程分别对list加入300个字符串,最后的arr的大小为800多,大家可以测试一下,我的一次是898,一次是897,同时还学了join的用法 i ...

  7. HOG特征

    HOG(Histogram of gradient)统计图像局部区域的梯度方向信息来作为该局部图像区域的表征.HOG特征具有以下几个特点: (1)不具有旋转不变性(较大的方向变化),实际应用中不变性是 ...

  8. 伪分布配置完成启动jobtracker和tasktracker没有启动

    检查logs目录下的hadoop-root-jobtracker日志文件 2014-02-26 19:56:06,782 FATAL org.apache.hadoop.mapred.JobTrack ...

  9. linux定时器用法

    linux定时器  原文出自http://www.cnblogs.com/processakai/archive/2012/04/11/2442294.html 今天看书看到了关于alarm的一些用法 ...

  10. 【python自动化第十一篇】

    [python自动化第十一篇:] 课程简介 gevent协程 select/poll/epoll/异步IO/事件驱动 RabbitMQ队列 上节课回顾 进程: 进程的诞生时为了处理多任务,资源的隔离, ...