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 相关文章推荐
ASP.NET jQuery 实例16 通过控件CustomValidator验证RadioButtonList
Feb 03 Javascript
浏览器加载、渲染和解析过程黑箱简析
Nov 29 Javascript
js生成随机数之random函数随机示例
Dec 20 Javascript
jQuery中contents()方法用法实例
Jan 08 Javascript
js实现同一页面多个运动效果的方法
Apr 10 Javascript
JS+CSS实现类似QQ好友及黑名单效果的树型菜单
Sep 22 Javascript
JS中如何比较两个Json对象是否相等实例代码
Jul 13 Javascript
利用jQuery实现滑动开关按钮效果(附demo源码下载)
Feb 07 Javascript
原生js编写2048小游戏
Mar 17 Javascript
JS实现中英文混合文字溢出友好截取功能
Aug 06 Javascript
微信小程序使用二次贝塞尔曲线画波浪
Dec 25 Javascript
原生JS利用transform实现banner的无限滚动示例代码
Jun 15 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&MYSQL服务器配置说明
2006/10/09 PHP
Dedecms常用函数解析
2008/02/01 PHP
通过5个php实例细致说明传值与传引用的区别
2012/08/08 PHP
php的webservice的wsdl的XML无法显示问题的解决方法
2014/03/11 PHP
php利用curl抓取新浪微博内容示例
2014/04/27 PHP
php生成随机密码自定义函数代码(简单快速)
2014/05/10 PHP
PHP间隔一段时间执行代码的方法
2014/12/02 PHP
PHP 反射(Reflection)使用实例
2015/05/12 PHP
php实现按天数、星期、月份查询的搜索框
2016/05/02 PHP
PHP正则匹配到2个字符串之间的内容方法
2018/12/24 PHP
使用JS或jQuery模拟鼠标点击a标签事件代码
2014/03/10 Javascript
jQuery中:has选择器用法实例
2014/12/30 Javascript
javascript跨域方法、原理以及出现问题解决方法(详解)
2015/08/06 Javascript
JavaScript中的数组遍历forEach()与map()方法以及兼容写法介绍
2016/05/19 Javascript
AngularJs  E2E Testing 详解
2016/09/02 Javascript
JS实现title标题栏文字不间断滚动显示效果
2016/09/07 Javascript
webpack独立打包和缓存处理详解
2017/04/03 Javascript
详解windows下vue-cli及webpack 构建网站(三)使用组件
2017/06/17 Javascript
JavaScript 获取元素在父节点中的下标(推荐)
2017/06/28 Javascript
用javascript获取任意颜色的更亮或更暗颜色值示例代码
2017/07/21 Javascript
jQuery实现基本淡入淡出效果的方法详解
2018/09/05 jQuery
elementUI select组件value值注意事项详解
2019/05/29 Javascript
laravel实现中文和英语互相切换的例子
2019/09/30 Javascript
Python计算回文数的方法
2015/03/11 Python
在Python中用has_key()方法查找键是否存在的教程
2015/05/21 Python
python函数的5种参数详解
2017/02/24 Python
Python中关键字nonlocal和global的声明与解析
2017/03/12 Python
简单了解Pandas缺失值处理方法
2019/11/16 Python
python字符串的拼接方法总结
2019/11/18 Python
python实现感知机模型的示例
2020/09/30 Python
Expedia挪威官网:酒店、机票和租车
2018/03/03 全球购物
英国领先的在线高尔夫商店:Scottsdale Golf
2019/08/26 全球购物
2014年学雷锋活动总结
2014/06/26 职场文书
2015年个人工作总结报告
2015/04/25 职场文书
详解如何在Canvas中添加事件的方法
2021/04/17 Javascript
MySQL sql_mode修改不生效的原因及解决
2021/05/07 MySQL