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与继承
Apr 14 Javascript
Javascript中引用示例介绍
Feb 21 Javascript
JS中怎样判断undefined(比较不错的方法)
Mar 27 Javascript
jquery操作checkbox示例分享
Jul 21 Javascript
在Javascript操作JSON对象,增加 删除 修改的简单实现
Jun 02 Javascript
jQuery实现CheckBox全选、全不选功能
Jan 11 Javascript
vue2 前后端分离项目ajax跨域session问题解决方法
Apr 27 Javascript
vue2中的keep-alive使用总结及注意事项
Dec 21 Javascript
浅谈vue3中effect与computed的亲密关系
Oct 10 Javascript
Webpack设置环境变量的一些误区详解
Dec 19 Javascript
解决qrcode.js生成二维码时必须定义一个空div的问题
Jul 09 Javascript
JS + HTML 罗盘式时钟的实现
May 21 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
浅析Dos下运行php.exe,出现没有找到php_mbstring.dll 错误的解决方法
2013/06/29 PHP
PHP 7的一些引人注目的新特性简单介绍
2015/11/08 PHP
PHP结合Mysql数据库实现留言板功能
2016/03/04 PHP
Yii使用migrate命令执行sql语句的方法
2016/03/15 PHP
Yii redis集合的基本使用教程
2020/06/14 PHP
Javascript查询DBpedia小应用实例学习
2013/03/07 Javascript
JavaScript 实现简单的倒计时弹窗DEMO附图
2014/03/05 Javascript
Jquery动态添加及删除页面节点元素示例代码
2014/06/16 Javascript
JS实现超简单的鼠标拖动效果
2015/11/02 Javascript
JavaScript基础知识及常用方法总结
2016/01/10 Javascript
jQuery Ajax页面局部加载方法汇总
2016/06/02 Javascript
你不需要jQuery(三) 新AJAX方法fetch()
2016/06/14 Javascript
jQuery 中ajax异步调用的四种方式
2016/06/28 Javascript
bootstrap表单按回车会自动刷新页面的解决办法
2017/03/08 Javascript
Bootstrap 模态对话框只加载一次 remote 数据的完美解决办法
2017/07/09 Javascript
JQuery模拟实现网页中自定义鼠标右键菜单功能
2018/11/14 jQuery
基于 vue-skeleton-webpack-plugin 的骨架屏实战
2019/08/05 Javascript
微信小程序canvas截取任意形状的实现代码
2020/01/13 Javascript
js最全的数组的降维5种办法(小结)
2020/04/28 Javascript
jquery实现鼠标悬浮弹出气泡提示框
2020/12/23 jQuery
Python多线程编程(八):使用Event实现线程间通信
2015/04/05 Python
使用Python实现在Windows下安装Django
2018/10/17 Python
python实现电子产品商店
2019/02/26 Python
Python continue语句实例用法
2020/02/06 Python
利用CSS3实现平移动画效果示例代码
2016/10/12 HTML / CSS
HTML5 常用语法一览(列举不支持的属性)
2010/01/26 HTML / CSS
德购商城:德国进口直邮商城
2017/06/13 全球购物
2015年119消防宣传日活动总结
2015/03/24 职场文书
2015驻村干部工作总结
2015/04/07 职场文书
无房证明样本
2015/06/17 职场文书
房产遗嘱范本
2015/08/06 职场文书
党员观看《筑梦中国》心得体会
2016/01/18 职场文书
团队合作精神学习心得体会
2016/01/19 职场文书
PySwarms(Python粒子群优化工具包)的使用:GlobalBestPSO例子解析
2021/04/05 Python
Python使用UDP实现720p视频传输的操作
2021/04/24 Python
Vue2项目中对百度地图的封装使用详解
2022/06/16 Vue.js