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 prototype对象的属性说明
Mar 13 Javascript
js控制iframe的高度/宽度让其自适应内容
Apr 09 Javascript
JavaScript截取指定长度字符串点击可以展开全部代码
Dec 04 Javascript
Bootstrap DateTime Picker日历控件简单应用
Mar 25 Javascript
JavaScript结合HTML DOM实现联动菜单
Apr 05 Javascript
HTML5实现微信拍摄上传照片功能
Apr 21 Javascript
JS闭包的几种常见形式实例详解
Sep 16 Javascript
vue 实现数字滚动增加效果的实例代码
Jul 06 Javascript
Vue登录注册并保持登录状态的方法
Aug 17 Javascript
Vue组件内部实现一个双向数据绑定的实例代码
Apr 04 Javascript
12 种使用Vue 的最佳做法
Mar 30 Javascript
使用AutoJs实现微信抢红包的代码
Dec 31 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结合curl实现多线程抓取
2015/07/09 PHP
php实现处理输入转义字符的代码
2015/11/08 PHP
PHP 接入微信扫码支付总结(总结篇)
2016/11/03 PHP
PHP如何使用cURL实现Get和Post请求
2020/07/11 PHP
js电信网通双线自动选择技巧
2008/11/18 Javascript
基于jquery.Jcrop的头像编辑器
2010/03/01 Javascript
基于jquery 的一个progressbar widge
2010/10/29 Javascript
客户端js性能优化小技巧整理
2013/11/05 Javascript
页面定时刷新(1秒刷新一次)
2013/11/22 Javascript
JS判断表单输入是否为空(示例代码)
2013/12/23 Javascript
JavaScript用Number方法实现string转int
2014/05/13 Javascript
jQuery实现的一个自定义Placeholder属性插件
2014/08/11 Javascript
JS/Jquery判断对象为空的方法
2015/06/11 Javascript
ES6学习之变量的解构赋值
2017/02/12 Javascript
jquery实现左右滑动式轮播图
2017/03/02 Javascript
div中文字内容溢出常见的解决方法
2017/03/16 Javascript
Angular实现的进度条功能示例
2018/02/18 Javascript
JavaScript引用类型Function实例详解
2018/08/09 Javascript
js中switch语句的学习笔记
2020/03/25 Javascript
vue 获取url里参数的两种方法小结
2020/11/12 Javascript
无法使用pip命令安装python第三方库的原因及解决方法
2018/06/12 Python
Django中的forms组件实例详解
2018/11/08 Python
5款Python程序员高频使用开发工具推荐
2019/04/10 Python
python 使用socket传输图片视频等文件的实现方式
2019/08/07 Python
python代码实现TSNE降维数据可视化教程
2020/02/28 Python
在Django中预防CSRF攻击的操作
2020/03/13 Python
浅谈Pycharm的项目文件名是红色的原因及解决方式
2020/06/01 Python
如何在python中实现线性回归
2020/08/10 Python
美国领先的户外服装与装备用品店:Moosejaw
2016/08/25 全球购物
中学门卫岗位职责
2013/12/26 职场文书
医药专业应届毕业生求职信范文
2014/01/01 职场文书
十佳大学生村官事迹
2014/01/09 职场文书
法人代表证明书格式
2014/10/01 职场文书
2014年行风建设工作总结
2014/12/01 职场文书
创业计划书之熟食店
2019/10/16 职场文书
MySQL 使用SQL语句修改表名的实现
2021/04/07 MySQL