详解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"代码
Jan 09 Javascript
爱恋千雪-US-AscII加密解密工具(网页加密)下载
Jun 06 Javascript
jQuery 阴影插件代码分享
Jan 09 Javascript
JavaScript获取和设置CheckBox状态的简单方法
Jul 05 Javascript
jquery中对于批量deferred的处理方法
Jan 22 Javascript
jQuery focus和blur事件的应用详解
Jan 26 Javascript
JS延时提示框实现方法详解
Nov 26 Javascript
JavaScript实现简单的tab选项卡切换
Jan 05 Javascript
Vue的Class与Style绑定的方法
Sep 01 Javascript
实例教学如何写vue插件
Nov 30 Javascript
JavaScript实现的简单Tab点击切换功能示例
Jul 06 Javascript
Vue指令之 v-cloak、v-text、v-html实例详解
Aug 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
声音就能俘获人心,蕾姆,是哪个漂亮小姐姐配音呢?
2020/03/03 日漫
PHP 面向对象详解
2012/09/13 PHP
PHP中copy on write写时复制机制介绍
2014/05/13 PHP
php数据库的增删改查 php与javascript之间的交互
2017/08/31 PHP
Laravel框架定时任务2种实现方式示例
2018/12/08 PHP
PHP Include文件实例讲解
2019/02/15 PHP
PHP中抽象类,接口功能、定义方法示例
2019/02/26 PHP
jQuery 判断页面元素是否存在的代码
2009/08/14 Javascript
JavaScript Event学习第五章 高级事件注册模型
2010/02/07 Javascript
Javascript函数式编程简单介绍
2015/10/11 Javascript
EasyUI创建对话框的两种方式
2016/08/23 Javascript
Vee-Validate的使用方法详解
2017/09/22 Javascript
bootstrap table合并行数据并居中对齐效果
2018/10/17 Javascript
如何使用pm2快速将项目部署到远程服务器
2019/03/12 Javascript
微信小程序 网络通信实现详解
2019/07/23 Javascript
vue获取data数据改变前后的值方法
2019/11/07 Javascript
javascript设计模式 ? 抽象工厂模式原理与应用实例分析
2020/04/09 Javascript
JavaScript Blob对象原理及用法详解
2020/10/14 Javascript
使用python的chardet库获得文件编码并修改编码
2014/01/22 Python
Python两个整数相除得到浮点数值的方法
2015/03/18 Python
利用Python中的mock库对Python代码进行模拟测试
2015/04/16 Python
python用装饰器自动注册Tornado路由详解
2017/02/14 Python
Python连接Redis的基本配置方法
2018/09/13 Python
python实现微信机器人: 登录微信、消息接收、自动回复功能
2019/04/29 Python
利用python开发app实战的方法
2019/07/09 Python
Pytorch释放显存占用方式
2020/01/13 Python
Pycharm修改python路径过程图解
2020/05/22 Python
波兰数码相机及配件网上商店: Cyfrowe.pl
2017/06/19 全球购物
世界上最大的冷却器制造商:Igloo Coolers
2019/07/23 全球购物
本科生的职业生涯规划范文
2014/01/09 职场文书
讲文明树新风公益广告宣传方案
2014/02/25 职场文书
捐资助学倡议书
2014/04/15 职场文书
运动会方队口号
2014/06/07 职场文书
校园元旦活动总结
2014/07/09 职场文书
法人授权委托书公证范本
2014/09/14 职场文书
客户经理岗位职责大全
2015/04/09 职场文书