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 相关文章推荐
THREE.JS入门教程(3)着色器-下
Jan 24 Javascript
Node.js编码规范
Jul 14 Javascript
Javascript访问器属性实例分析
Dec 30 Javascript
推荐10 款 SVG 动画的 JavaScript 库
Mar 24 Javascript
jquery实现的美女拼图游戏实例
May 04 Javascript
基于JavaScript代码实现兼容各浏览器的设为首页和加入收藏
Jan 07 Javascript
AngularJS ng-bind-html 指令详解及实例代码
Jul 30 Javascript
JS 终止执行的实现方法
Nov 24 Javascript
jQuery解析返回的xml和json方法详解
Jan 05 Javascript
JS利用正则表达式实现简单的密码强弱判断实例
Jun 16 Javascript
vue中post请求以a=a&b=b 的格式写遇到的问题
Apr 27 Javascript
利用 JavaScript 实现并发控制的示例代码
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
php5 mysql分页实例代码
2008/04/10 PHP
PHP正则验证Email的方法
2015/06/15 PHP
PHP7常量数组用法分析
2016/09/26 PHP
Mac下快速搭建PHP开发环境步骤详解
2019/05/05 PHP
php远程请求CURL实例教程(爬虫、保存登录状态)
2020/12/10 PHP
js里的prototype使用示例
2010/11/19 Javascript
有关于eclipse配置spket需要注意的一些地方
2013/04/07 Javascript
javascript记录文本框内文字个数检测文字个数变化
2014/10/14 Javascript
jquery ui bootstrap 实现自定义风格
2014/11/14 Javascript
javascript实现通过表格绘制颜色填充矩形的方法
2015/04/21 Javascript
javascript实现根据3原色制作颜色选择器的方法
2015/07/17 Javascript
javascript实现的简单计时器
2015/07/19 Javascript
Underscore源码分析
2015/12/30 Javascript
jQuery基础知识点总结(必看)
2016/05/31 Javascript
灵活使用数组制作图片切换js实现
2016/07/28 Javascript
JavaScript与Java正则表达式写法的区别介绍
2017/08/15 Javascript
jQuery使用$.extend(true,object1, object2);实现深拷贝对象的方法分析
2019/03/06 jQuery
vue进入页面时滚动条始终在底部代码实例
2019/03/26 Javascript
vue 实现通过vuex 存储值 在不同界面使用
2019/11/11 Javascript
node事件循环和process模块实例分析
2020/02/14 Javascript
原生JS实现萤火虫效果
2020/03/07 Javascript
Vue 中使用lodash对事件进行防抖和节流操作
2020/07/26 Javascript
让Python脚本暂停执行的几种方法(小结)
2019/07/11 Python
Python 实现输入任意多个数,并计算其平均值的例子
2019/07/16 Python
Python math库 ln(x)运算的实现及原理
2019/07/17 Python
python线程的几种创建方式详解
2019/08/29 Python
Python中xml和dict格式转换的示例代码
2019/11/07 Python
python实现简易版学生成绩管理系统
2020/06/22 Python
使用html2canvas.js实现页面截图并显示或上传的示例代码
2018/12/18 HTML / CSS
世界上获奖最多的手机镜头:Olloclip
2018/03/03 全球购物
澳洲国民品牌乡村路折扣店:Country Road & Trenery Outlet
2018/04/19 全球购物
学生检讨书怎么写?
2014/10/10 职场文书
放弃继承权公证书
2015/01/23 职场文书
入党宣誓大会后的感想
2015/08/10 职场文书
请假条应该怎么写?
2019/06/24 职场文书
行政后勤人员工作计划应该怎么写?
2019/08/16 职场文书