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对W3C DOM模版的支持情况
Jun 16 Javascript
快速学习AngularJs HTTP响应拦截器
Dec 31 Javascript
jQuery 3.0中存在问题及解决办法
Jul 15 Javascript
javascript 动态样式添加的简单实现
Oct 11 Javascript
使用json来定义函数,在里面可以定义多个函数的实现方法
Oct 28 Javascript
jQuery序列化后的表单值转换成Json
Jun 16 jQuery
解决微信二次分享不显示摘要和图片的问题
Aug 18 Javascript
React Native使用Modal自定义分享界面的示例代码
Oct 31 Javascript
node内置调试方法总结
Feb 22 Javascript
关于RxJS Subject的学习笔记
Dec 05 Javascript
解决vue语法会有延迟加载显现{{xxx}}的问题
Nov 14 Javascript
国庆节到了,利用JS实现一个生成国庆风头像的小工具 详解实现过程
Oct 05 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使用Alexa API获取网站的Alexa排名例子
2014/06/12 PHP
浅析PHP中call user func()函数及如何使用call user func调用自定义函数
2015/11/05 PHP
Dom 结点创建 基础知识
2011/10/01 Javascript
JS解析XML文件和XML字符串详解
2015/04/17 Javascript
javascript实现的多个层切换效果通用函数实例
2015/07/06 Javascript
node.js cookie-parser 中间件介绍
2016/06/06 Javascript
多功能jQuery树插件zTree实现权限列表简单实例
2016/07/12 Javascript
AngularJS入门教程之ng-checked 指令详解
2016/08/01 Javascript
webpack+vue.js实现组件化详解
2016/10/12 Javascript
javascript自执行函数
2017/02/10 Javascript
JS获取鼠标坐标并且根据鼠标位置不同弹出不同内容
2017/06/12 Javascript
Mobile Web开发基础之四--处理手机设备的横竖屏问题
2017/08/11 Javascript
结合mint-ui移动端下拉加载实践方法总结
2017/11/08 Javascript
JavaScript实现仿Clock ISO时钟
2018/06/29 Javascript
js中Object.defineProperty()方法的不详解
2018/07/09 Javascript
Angular 实现输入框中显示文章标签的实例代码
2018/11/07 Javascript
JS 验证码功能的三种实现方式
2018/11/26 Javascript
微信小程序自定义头部导航栏和导航栏背景图片 navigationStyle问题
2019/07/26 Javascript
在Vue中创建可重用的 Transition的方法
2020/06/02 Javascript
使用nodejs实现JSON文件自动转Excel的工具(推荐)
2020/06/24 NodeJs
Python中的探索性数据分析(功能式)
2017/12/22 Python
详解分布式任务队列Celery使用说明
2018/11/29 Python
pytorch掉坑记录:model.eval的作用说明
2020/06/23 Python
adidas官方旗舰店:德国运动用品制造商
2017/11/25 全球购物
英国布鲁姆精品店:Bloom Boutique
2018/03/01 全球购物
厂长助理岗位职责
2013/12/27 职场文书
总经理助理的职责
2014/03/14 职场文书
小学教师师德承诺书
2014/05/23 职场文书
酒店开业策划方案
2014/06/02 职场文书
校园广播稿100字
2014/10/06 职场文书
婚前协议书标准版
2014/10/19 职场文书
股份转让协议书范本
2015/01/27 职场文书
2015年英语教师工作总结
2015/05/20 职场文书
python中的sys模块和os模块
2022/03/20 Python
「月刊Action」2022年5月号封面公开
2022/03/21 日漫
详解PyTorch模型保存与加载
2022/04/28 Python