文档章节

详解jQuery插件开发方式

码农般的学良
 码农般的学良
发布于 2016/11/23 13:49
字数 1137
阅读 14
收藏 0

Query插件开发 

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

一、jQuery扩展

  1、$.extend(object)

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

?

1

2

3

4

$(function(){

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

$.fun1();

})

  2、$.fn.extend(object)

  扩展jQuery的对象。

?

1

2

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

$("#id1").fun2();

  可以用google来看看:

  上面的写法等同于:

?

1

2

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

$(this).fun2();

二、私有域

  其定义方式如下:

?

1

2

3

4

(function ($) { })(jQuery);

//相当于

var fn = function (xxoo) { };

fn(jQuery);

  以下代码弹出123。

?

1

2

3

4

$(function(){

var fn = function (xxoo) { };

fn(alert(123));

})

三、定义插件的基本步骤

  1、定义作用域

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

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

?

1

2

3

(function ($) {

 

})(jQuery);

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

  2、扩展jQuery

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

?

1

2

3

4

5

6

7

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

 (function ($) {

 //步骤2 插件的扩展方法名称

 $.fn.MyFrame = function (options) {

   

 }

 })(jQuery);

    3、默认值

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

?

1

2

3

4

5

6

7

8

9

10

11

12

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

 (function ($) {

 //步骤3 插件的默认值属性

 var defaults = {

  Id: '#id1',

 };

 //步骤2 插件的扩展方法名称

 $.fn.MyFrame = function (options) {

  //步骤3 合并用户自定义属性,默认属性(如果options为空,则使用defaults)

  var options = $.extend(defaults, options);

 }

 })(jQuery);

     4、支持jQuery选择器

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

//步骤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

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

//步骤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

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

//步骤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的私有函数目前允许的插件内部使用。

 以上就是本文的全部内容,希望对大家有所帮助,谢谢对脚本之家的支持!

您可能感兴趣的文章:

© 著作权归作者所有

共有 人打赏支持
码农般的学良
粉丝 1
博文 20
码字总数 23265
作品 0
通州
私信 提问
HTML Jquery EasyUI日期选择框的使用详解

jQuery EasyUI是基于JQuery的一个前台ui界面的插件,功能相对没extjs强大,但页面也是相当好看的。一些功能也足够开发者使用,相对于extjs更轻量。以下是开发中经常使用的HTML Jquery EasyU...

Amamatthew
2014/09/11
0
0
jquery常用的插件1000收集

花N长时间积累的Jquery插件,希望大家喜欢。大家还有什么新的插件,请留言,我们一并收录。 感谢大家的支持。 1.accordion类 基于jQuery开发,非常简单的水平方向折叠控件。 Horizontal acc...

Alic
2011/03/07
0
6
SeaJS中jQuery插件模块化及其调用方式

jQuery插件本质上是将命名空间挂在全局的jQuery或jQuery.fn上而非使用define定义的模块。 JQuery的这种扩展机制同模块化要求模块的独立性,以及模块互相隔离有点冲突。 jQuery插件数目众多,...

brivio
2014/03/15
0
0
JQuery.extend函数使用详解 $.extend

jQuery为开发插件提供了两个方法,分别是: 1. jQuery.fn.extend():给jQuery对象提供方法。 2. jQuery.extend():为扩展jQuery类本身添加方法。 先看源码是怎么实现的,截取自JQuery-1.11.0...

Josean_Luo
2014/04/11
0
1
自定义jQuery插件Step by Step

自定义jQuery插件Step by Step 1.1.1 摘要 随着前端和后端技术的分离,各大互联网公司对于Mobile First理念都是趋之若鹜的,为了解决网页在不同移动设备上的显示效果,其中一个解决方案就是R...

wolf_su
2013/07/04
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周日乱弹 —— 懒床是对冬天最起码的尊重

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @瘟神灬念 :分享daniwellP/桃音モモ的单曲《Nyan Cat》 《Nyan Cat》- daniwellP/桃音モモ 手机党少年们想听歌,请使劲儿戳(这里) @巴拉迪...

小小编辑
29分钟前
5
0
码云项目100,水一发

简单回顾一下: 早期构想最多的,是希望能将PHP一些类和编码分区做得更细,所以很多尝试。但不得不说,PHP的功能过于单一,是的,也许写C/C++扩展,可以解决问题,那我为什么不用C#或者Golan...

曾建凯
今天
3
0
Spring应用学习——AOP

1. AOP 1. AOP:即面向切面编程,采用横向抽取机制,取代了传统的继承体系的重复代码问题,如下图所示,性能监控、日志记录等代码围绕业务逻辑代码,而这部分代码是一个高度重复的代码,也就...

江左煤郎
今天
4
0
eclipse的版本

Eclipse各版本代号一览表 Eclipse的设计思想是:一切皆插件。Eclipse核心很小,其它所有功能都以插件的形式附加于Eclipse核心之上。 Eclipse基本内核包括:图形API(SWT/Jface),Java开发环...

mdoo
今天
3
0
SpringBoot源码:启动过程分析(一)

本文主要分析 SpringBoot 的启动过程。 SpringBoot的版本为:2.1.0 release,最新版本。 一.时序图 还是老套路,先把分析过程的时序图摆出来:时序图-SpringBoot2.10启动分析 二.源码分析 首...

Jacktanger
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部