详解jQuery插件开发方式


Posted in Javascript onNovember 22, 2016

jQuery插件开发 

一般来说,jQuery插件的开发分为两种:一种是挂在jQuery命名空间下的全局函数,也可称为静态方法;另一种是jQuery对象级别的方法,即挂在jQuery原型下的方法,这样通过选择器获取的jQuery对象实例也能共享该方法。

一、jQuery扩展

1、$.extend(object)

类似于.Net的扩展方法,用于扩展jQuery。然后就可以用$.的方式调用。

$(function(){
 $.extend({ fun1: function () { alert("为jQuery扩展一个fun1函数!"); } });
 $.fun1();
 })

2、$.fn.extend(object)

扩展jQuery的对象。

$.fn.extend({ fun2: function () { alert("执行方法2"); } });
 $("#id1").fun2();

可以用google来看看:

详解jQuery插件开发方式

上面的写法等同于:

$.fn.fun2 = function () { alert("执行方法2"); }
 $(this).fun2();

二、私有域

其定义方式如下:

(function ($) { })(jQuery);
//相当于
var fn = function (xxoo) { };
fn(jQuery);

以下代码弹出123。

$(function(){
 var fn = function (xxoo) { };
 fn(alert(123));
 })

三、定义插件的基本步骤

1、定义作用域

开发一个jQuery插件,首先要把插件的代码与外界隔离开来,外部的代码不允许直接访问插件内部的代码,插件内部的代码也不影响外部。

    //步骤1 定义插件私有作用域

(function ($) {

 })(jQuery);

 这样就能保证插件内部的代码与外界隔离了。

2、扩展jQuery

定义了作用域之后,为了能够让外部调用,就需要将插件扩展到jQuery。

//步骤1 定义私有作用域
 (function ($) {
 //步骤2 插件的扩展方法名称
 $.fn.MyFrame = function (options) {
 
 }
 })(jQuery);

    3、默认值

定义了jQuery插件之后,如果希望某些参数具有默认值,那么可以以这种方式来指定。

//步骤1 定义私有作用域
 (function ($) {
 //步骤3 插件的默认值属性
 var defaults = {
 Id: '#id1',
 };
 //步骤2 插件的扩展方法名称
 $.fn.MyFrame = function (options) {
 //步骤3 合并用户自定义属性,默认属性(如果options为空,则使用defaults)
 var options = $.extend(defaults, options);
 }
 })(jQuery);

     4、支持jQuery选择器

//步骤1 定义私有作用域
 (function ($) {
 //步骤3 插件的默认值属性
 var defaults = {
 Id: '#id1',
 };
 //步骤2 插件的扩展方法名称
 $.fn.MyFrame = function (options) {
 //步骤3 合并用户自定义属性,默认属性(如果options为空,则使用defaults)
 var options = $.extend(defaults, options);
 }
 //步骤4 支持jQuery选择器
 this.each(function () {

 });
 })(jQuery);

    5、支持jQuery的链式调用

//步骤1 定义私有作用域
 (function ($) {
 //步骤3 插件的默认值属性
 var defaults = {
 Id: '#id1',
 };
 //步骤2 插件的扩展方法名称
 $.fn.MyFrame = function (options) {
 //步骤3 合并用户自定义属性,默认属性(如果options为空,则使用defaults)
 var options = $.extend(defaults, options);
 }
 //步骤4 支持jQuery选择器
 //步骤5 支持链式调用(将步骤4返回)
 return this.each(function () {

 });
 })(jQuery);

     6、插件内部方法

//步骤1 定义私有作用域
 (function ($) {
 //步骤3 插件的默认值属性
 var defaults = {
 Id: '#id1',
 };

 //步骤6 在插件里定义函数
 var MyFun = function (obj) {
 alert(obj);
 }

 //步骤2 插件的扩展方法名称
 $.fn.MyFrame = function (options) {
 //步骤3 合并用户自定义属性,默认属性(如果options为空,则使用defaults)
 var options = $.extend(defaults, options);
 }
 //步骤4 支持jQuery选择器
 //步骤5 支持链式调用(将步骤4返回)
 return this.each(function () {
 //步骤6 在插件里定义函数
 MyFun(this);
 });
 })(jQuery);

    由于作用域关系,步骤6的私有函数目前允许的插件内部使用。

 以上就是本文的全部内容,希望对大家有所帮助,谢谢对三水点靠木的支持!

Javascript 相关文章推荐
在JavaScript中,为什么要尽可能使用局部变量?
Apr 06 Javascript
javascript dom 操作详解 js加强
Jul 13 Javascript
js url传值中文乱码之解决之道
Nov 20 Javascript
JS判断两个时间大小的示例代码
Jan 28 Javascript
推荐5 个常用的JavaScript调试技巧
Jan 08 Javascript
javascript判断变量是否有值的方法
Apr 20 Javascript
jQuery 插件封装的方法
Nov 16 Javascript
Jquery Easyui日历组件Calender使用详解(23)
Dec 18 Javascript
jQuery实现的页面详情展开收起功能示例
Jun 11 jQuery
vue的全局变量和全局拦截请求器的示例代码
Sep 13 Javascript
vue中v-model对select的绑定操作
Aug 31 Javascript
JS使用setInterval计时器实现挑战10秒
Nov 08 Javascript
AngularJS中isolate scope的用法分析
Nov 22 #Javascript
详解js界面跳转与值传递
Nov 22 #Javascript
js实现界面向原生界面发消息并跳转功能
Nov 22 #Javascript
JavaScript面向对象分层思维全面解析
Nov 22 #Javascript
浅析location.href跨窗口调用函数
Nov 22 #Javascript
Angular和Vue双向数据绑定的实现原理(重点是vue的双向绑定)
Nov 22 #Javascript
AngularJS全局scope与Isolate scope通信用法示例
Nov 22 #Javascript
You might like
PHP实现把文本中的URL转换为链接的auolink()函数分享
2014/07/29 PHP
php数组查找函数总结
2014/11/18 PHP
PHP书写格式详解(必看)
2016/05/23 PHP
javascript编程起步(第一课)
2007/01/10 Javascript
用javascript实现的图片马赛克后显示并切换加文字功能
2007/04/21 Javascript
运用jquery实现table单双行不同显示并能单行选中
2009/07/25 Javascript
在Windows上安装Node.js模块的方法
2011/09/25 Javascript
分享8款优秀的 jQuery 加载动画和进度条插件
2012/10/24 Javascript
js中AppendChild与insertBefore的用法详细解析
2013/12/16 Javascript
javascript图片相似度算法实现 js实现直方图和向量算法
2014/01/14 Javascript
javascript中Date对象的getDay方法使用指南
2014/12/22 Javascript
jquery果冻抖动效果实现方法
2015/01/15 Javascript
Bootstrap模态对话框的简单使用
2016/04/29 Javascript
jQuery实现iframe父窗体和子窗体的相互调用
2016/06/17 Javascript
使用jquery如何获取时间
2016/10/13 Javascript
webpack2.0配置postcss-loader的方法
2017/08/17 Javascript
JS实现的小火箭发射动画效果示例
2018/12/08 Javascript
js数据类型转换与流程控制操作实例分析
2019/12/18 Javascript
js+canvas实现刮刮奖功能
2020/09/13 Javascript
[03:46]显微镜下的DOTA2第七期——满血与残血
2014/06/20 DOTA
[46:57]EG vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
[35:34]Liquid vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
python获取标准北京时间的方法
2015/03/24 Python
Python中splitlines()方法的使用简介
2015/05/20 Python
关于Python中Inf与Nan的判断问题详解
2017/02/08 Python
Python在不同目录下导入模块的实现方法
2017/10/27 Python
Python3 导入上级目录中的模块实例
2019/02/16 Python
Python json模块与jsonpath模块区别详解
2020/03/05 Python
Python基于jieba, wordcloud库生成中文词云
2020/05/13 Python
HTML5 WebGL 实现民航客机飞行监控系统
2019/07/25 HTML / CSS
加大码胸罩、内裤和服装:Just My Size
2019/03/21 全球购物
2014年学生资助工作总结
2014/12/18 职场文书
《弟子规》读后感:知廉耻、明是非、懂荣辱、辨善恶
2019/12/03 职场文书
python plt.plot bar 如何设置绘图尺寸大小
2021/06/01 Python
vscode中使用npm安装babel的方法
2021/08/02 Javascript
MySQL中dd::columns表结构转table过程及应用详解
2022/09/23 MySQL