文档章节

详解jQuery插件开发方式

码农般的学良
 码农般的学良
发布于 2016/11/23 13:49
字数 1137
阅读 12
收藏 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
通州
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
HTML Jquery EasyUI日期选择框的使用详解

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

Amamatthew
2014/09/11
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

没有更多内容

加载失败,请刷新页面

加载更多

C++ std::function 和 std::bind

C++11提供了std::function和std::bind两个工具,用于引用可调用对象。这些可调用对象包括 普通函数,Lambda表达式,类的静态成员函数,非静态成员函数以及仿函数等。引用可调用对象,可以用于...

yepanl
57分钟前
1
0
python:可迭代对象的索引

关于 python的range的用法: 注意是[ 开始,结束)的半开区间,不包括结束 http://www.runoob.com/python/python-func-range.html import collectionsfrom collections import Iterable字符串......

Oh_really
今天
2
0
docker-compose ,docker-stack

1.例子 version: "3"services: php: image: registry.cn-hangzhou.aliyuncs.com/lxepoo/apache-php5 ports: - "38080:80" networks: - my_php_mysql volum......

chenbaojun
今天
3
0
SQL_Server2000示例数据库NorthWind的分析(转)

SQL_Server2000示例数据库NorthWind的分析 表名:Categories(食品类别表) 表结构: 字段名称 数据类型 长度 允许为空 CategoryID(主键) int 4 否 CategoryName nvarchar 15 否 Description ...

QQZZFT
今天
1
0
laravel 5.5 Session store not set on request.

laravel 5.5 数据存入session,会出现Session store not set on request.错误。查了下laravel 5.5将session放到global middleware中,需要laravel的文件 ./app/Http/Kernel.php中的加上一句:...

MichaelShu
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部