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 相关文章推荐
jquery 事件对象属性小结
Apr 27 Javascript
JQuery对checkbox操作 (循环获取)
May 20 Javascript
ASP.NET jQuery 实例16 通过控件CustomValidator验证RadioButtonList
Feb 03 Javascript
固定表格行列(expression)在IE下适用
Jul 25 Javascript
Node.js中child_process实现多进程
Feb 03 Javascript
JavaScript如何实现对数字保留两位小数一位自动补零
Dec 18 Javascript
jquery判断类型是不是number类型的实例代码
Oct 07 Javascript
jquery实现二级导航下拉菜单效果实例
May 14 jQuery
微信小程序 swiper 组件遇到的问题及解决方法
May 26 Javascript
js如何实现元素曝光上报
Aug 07 Javascript
环形加载进度条封装(Vue插件版和原生js版)
Dec 04 Javascript
JavaScript读取本地文件常用方法流程解析
Oct 12 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内置的Math函数效率测试
2014/12/01 PHP
php打造智能化的柱状图程序,用于报表等
2015/06/19 PHP
php+curl 发送图片处理代码分享
2015/07/09 PHP
thinkphp autoload 命名空间自定义 namespace
2015/07/17 PHP
详解PHP 7.4 中数组延展操作符语法知识点
2019/07/19 PHP
原生js实现跨浏览器获取鼠标按键的值
2013/04/08 Javascript
Jquery自定义button按钮的几种方法
2014/06/11 Javascript
jQuery中end()方法用法实例
2015/01/08 Javascript
JavaScript通过事件代理高亮显示表格行的方法
2015/05/27 Javascript
JavaScript实现的伸展收缩型菜单代码
2015/10/14 Javascript
Easyui 之 Treegrid 笔记
2016/04/29 Javascript
JavaScript直播评论发弹幕切图功能点集合效果代码
2016/06/26 Javascript
Nodejs进阶:如何将图片转成datauri嵌入到网页中去实例
2016/11/21 NodeJs
JavaScript数据类型的存储方法详解
2017/08/25 Javascript
基于vue-resource jsonp跨域问题的解决方法
2018/02/03 Javascript
vue+canvas实现炫酷时钟效果的倒计时插件(已发布到npm的vue2插件,开箱即用)
2018/11/05 Javascript
vue.js的状态管理vuex中store的使用详解
2019/11/08 Javascript
[05:00]第二届DOTA2亚洲邀请赛主赛事第三天比赛集锦.mp4
2017/04/04 DOTA
Python中for循环控制语句用法实例
2015/06/02 Python
python简单实现获取当前时间
2016/08/27 Python
python 设置文件编码格式的实现方法
2017/12/21 Python
Python找出微信上删除你好友的人脚本写法
2018/11/01 Python
对Django项目中的ORM映射与模糊查询的使用详解
2019/07/18 Python
python sitk.show()与imageJ结合使用常见的问题
2020/04/20 Python
将HTML5 Canvas的内容保存为图片借助toDataURL实现
2013/05/20 HTML / CSS
阿玛尼意大利官网:Armani意大利
2018/10/30 全球购物
四年大学生活的个人自我评价
2013/12/11 职场文书
校友会欢迎辞
2014/01/13 职场文书
遥感技术与仪器求职信
2014/02/22 职场文书
租赁协议书范本
2014/04/22 职场文书
思想道德自我评价2015
2015/03/09 职场文书
校长新学期致辞
2015/07/30 职场文书
2016年社区中秋节活动总结
2016/04/05 职场文书
大学生入党自我鉴定范文
2019/06/21 职场文书
MySQL之PXC集群搭建的方法步骤
2021/05/25 MySQL
docker-compose部署Yapi的方法
2022/04/08 Servers