JavaScript的jQuery库插件的简要开发指南


Posted in Javascript onAugust 12, 2015

jQuery 插件通常分两类。

  1.     基于选择器的插件(支持链式操作)
  2.     不基于选择器的插件(不支持链式操作)

前段时间简单学习了 jQuery 插件开发,开发了两个简单的插件,在此对两种插件的开发模式做简要总结。
基于选择器的插件

通常开发模式如下:

(function($, window, undefined) {
 $.fn.PluginName = function(opts) {
 var defaults = {
  // 插件自定义选项的默认值
 };

 // 以用户的自定义选项覆盖默认选项
 var options = $.extend(defaults, opts || {});

 return this.each(function() { // 让插件支持链式操作
  // 在这里编写插件功能代码
 });
 };
})(jQuery, window);

首先,创建一个匿名的自执行函数,形参为 $ 、 window 和 undefined,实参为 jQuery 和 window。

嗯?为什么没有为 undefined 对应地传入一个实参呢?这是一个小技巧,考虑到 undefined 这个变量名可能在其它地方的 JavaScript 代码赋过值,失去了它真正的意义,所以这里干脆不传入这个参数,以确保它在那个匿名自执行函数中是真正的 undefined。

jQuery 传入后对应为 $,这样可以保证插件内调用的 $ 一定是 jQuery 而非 Prototype 之类的库。

此类插件的调用方式一般为 $(selector).PluginName(); 这种形式。

此类具体示例可参考 https://github.com/libuchao/KTwitter
不基于选择器的插件

由于此类插件不依赖于选择器,所以也无链式操作一说。一般开发模式如下:

(function($, window, undefined) {
 $.PluginName = function(opts) {
 var defaults = {
  // 插件自定义选项的默认值
 };

 // 以用户的自定义选项覆盖默认选项
 var options = $.extend(defaults, opts || {});

 // 在这里编写插件功能代码
 };
})(jQuery, window);

此类插件的调用形式一般为 $(selector).PluginName(); 这种形式。

Javascript 相关文章推荐
javascript中巧用“闭包”实现程序的暂停执行功能
Apr 04 Javascript
javascript之bind使用介绍
Oct 09 Javascript
js字符串日期yyyy-MM-dd转化为date示例代码
Mar 06 Javascript
基于jQuey实现鼠标滑过变色(整行变色)
Dec 07 Javascript
Jquery Easyui自定义下拉框组件使用详解(21)
Dec 31 Javascript
Linux系统中利用node.js提取Word(doc/docx)及PDF文本的内容
Jun 17 Javascript
vue axios请求超时的正确处理方法
Apr 02 Javascript
node.js读取Excel数据(下载图片)的方法示例
Aug 02 Javascript
jQuery+css last-child实现选择最后一个子元素操作示例
Dec 10 jQuery
优雅的elementUI table单元格可编辑实现方法详解
Dec 23 Javascript
浅析JavaScript异步代码优化
Mar 18 Javascript
Node.js 多线程完全指南总结
Mar 27 Javascript
JavaScript中的call方法和apply方法使用对比
Aug 12 #Javascript
详细解读JavaScript的跨浏览器事件处理
Aug 12 #Javascript
基于jQuery实现动态数字展示效果
Aug 12 #Javascript
jQuery中$.ajax()和$.getJson()同步处理详解
Aug 12 #Javascript
深入解读JavaScript中的Hoisting机制
Aug 12 #Javascript
Jquery代码实现图片轮播效果(一)
Aug 12 #Javascript
javascript表单验证大全
Aug 12 #Javascript
You might like
php利用反射实现插件机制的方法
2015/03/14 PHP
PHP+shell实现多线程的方法
2015/07/01 PHP
JS 获取浏览器和屏幕宽高等信息的实现思路及代码
2013/07/31 Javascript
JS+DIV+CSS实现仿表单下拉列表效果
2015/08/18 Javascript
谈谈Jquery ajax中success和complete有哪些不同点
2015/11/20 Javascript
jQuery form插件之formDdata参数校验表单及验证后提交
2016/01/23 Javascript
Nodejs Stream 数据流使用手册
2016/04/17 NodeJs
使用jQuery制作浮动工具栏的实例分享
2016/05/13 Javascript
Angualrjs和bootstrap相结合实现数据表格table
2017/03/30 Javascript
JS获取日期的方法实例【昨天,今天,明天,前n天,后n天的日期】
2017/09/28 Javascript
js前端导出Excel的方法
2017/11/01 Javascript
利用百度地图API获取当前位置信息的实例
2017/11/06 Javascript
Bootstrap table使用方法汇总
2017/11/17 Javascript
Vue动态控制input的disabled属性的方法
2018/06/26 Javascript
微信小程序实现发红包功能
2018/07/11 Javascript
在SSM框架下用laypage和ajax实现分页和数据交互的方法
2019/09/27 Javascript
vue实现文字加密功能
2019/09/27 Javascript
微信公众号H5之微信分享常见错误和问题(小结)
2019/11/14 Javascript
js验证账户名是否重复
2020/05/26 Javascript
详解uniapp的全局变量实现方式
2021/01/11 Javascript
python常见排序算法基础教程
2017/04/13 Python
python操作excel的方法
2018/08/16 Python
python点击鼠标获取坐标(Graphics)
2019/08/10 Python
Django-imagekit的使用详解
2020/07/06 Python
Python基于httpx模块实现发送请求
2020/07/07 Python
一文读懂python Scrapy爬虫框架
2021/02/24 Python
ebookers英国:隶属全球最大的在线旅游公司Expedia
2017/12/28 全球购物
请解释在new与override的区别
2012/10/29 面试题
商务英语专业求职信范文
2014/01/28 职场文书
12岁生日演讲稿
2014/05/14 职场文书
小学语文教学经验交流材料
2014/06/02 职场文书
单位工作证明
2014/10/07 职场文书
2015年征兵工作总结
2015/07/23 职场文书
关爱留守儿童主题班会
2015/08/13 职场文书
省级三好学生主要事迹材料
2015/11/03 职场文书
高一作文之乐趣
2019/11/21 职场文书