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操作cookie类实例
Mar 31 Javascript
Jquery判断form表单数据是否变化
Mar 30 Javascript
jQuery Mobile页面返回不需要重新get
Apr 26 Javascript
javascript用正则表达式过滤空格的实现代码
Jun 14 Javascript
Vue.js实现实例搜索应用功能详细代码
Aug 24 Javascript
Vue.js实现输入框绑定的实例代码
Aug 24 Javascript
基于原生js运动方式关键点的总结(推荐)
Oct 01 Javascript
基于vue-ssr服务端渲染入门详解
Jan 08 Javascript
vue+webpack模拟后台数据的示例代码
Jul 26 Javascript
JavaScript函数式编程(Functional Programming)纯函数用法分析
May 22 Javascript
Vue中axios拦截器如何单独配置token
Dec 27 Javascript
原生js实现无缝轮播图
Jan 11 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获取指定日期所在月的开始日期与结束日期
2013/08/01 PHP
php使用MySQL保存session会话的方法
2015/06/26 PHP
浅析php如何实现爬取数据原理
2018/09/27 PHP
TP3.2框架分页相关实现方法分析
2020/06/03 PHP
关于IE7 IE8弹出窗口顶上
2008/12/22 Javascript
Jquery 实现Tab效果 思路是js思路
2010/03/02 Javascript
JS实现self的resend
2010/07/22 Javascript
jquery 之 $().hover(func1, funct2)使用方法
2012/06/14 Javascript
Javascript中的delete介绍
2012/09/02 Javascript
javascript打印大全(打印页面设置/打印预览代码)
2013/03/29 Javascript
Javascript中 关于prototype属性实现继承的原理图
2013/04/16 Javascript
jquery使用animate方法实现控制元素移动
2015/03/27 Javascript
javascript比较两个日期相差天数的方法
2015/07/24 Javascript
js判断数组key是否存在(不用循环)的简单实例
2016/08/03 Javascript
JavaScript仿支付宝6位数字密码输入框
2016/12/29 Javascript
js实现4个方向滚动的球
2017/03/06 Javascript
Node.js使用NodeMailer发送邮件实例代码
2017/03/06 Javascript
Vue网页html转换PDF(最低兼容ie10)的思路详解
2017/08/24 Javascript
jQuery实现点击下拉框中的值累加到文本框中的方法示例
2017/10/28 jQuery
Vue中的Vux配置指南
2017/12/08 Javascript
详解如何使用webpack打包JS
2018/06/21 Javascript
爬虫利器Puppeteer实战
2019/01/09 Javascript
[02:28]DOTA2 2015国际邀请赛中国区预选赛首日现场百态
2015/05/26 DOTA
python多重继承新算法C3介绍
2014/09/28 Python
Python中有趣在__call__函数
2015/06/21 Python
python脚本替换指定行实现步骤
2017/07/11 Python
python使用Tesseract库识别验证
2018/03/21 Python
django为Form生成的label标签添加class方式
2020/05/20 Python
美国经典刺绣和字母儿童服装特卖:Smocked Auctions
2018/07/16 全球购物
机械设计及其自动化专业推荐信
2013/10/31 职场文书
企业管理部经理岗位职责
2013/12/24 职场文书
大学生两会精神学习心得体会
2014/03/10 职场文书
社区务虚会发言材料
2014/10/20 职场文书
主持人开场白台词
2015/05/29 职场文书
结婚典礼主持词
2015/06/29 职场文书
zabbix如何添加监控主机和自定义监控项
2022/08/14 Servers