一、jQuery扩展

  1、$.extend(object)

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

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

  2、$.fn.extend(object)

  扩展jQuery的对象。

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

  可以用google来看看:

  

  上面的写法等同于:

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

二、私有域

  其定义方式如下:

  1. (function ($) { })(jQuery);
  2. //相当于
  3. var fn = function (xxoo) { };
  4. fn(jQuery);

  以下代码弹出123。

  1. $(function(){
  2. var fn = function (xxoo) { };
  3. fn(alert(123));
  4. })

三、定义插件的基本步骤

  1、定义作用域

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

  1. //步骤1 定义插件私有作用域
  2. (function ($) {
  3.  
  4. })(jQuery);

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

  2、扩展jQuery

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

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

  3、默认值

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

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

  4、支持jQuery选择器

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

  5、支持jQuery的链式调用

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

  6、插件内部方法

  

  1. //步骤1 定义私有作用域
  2. (function ($) {
  3. //步骤3 插件的默认值属性
  4. var defaults = {
  5. Id: '#id1',
  6. };
  7.  
  8. //步骤6 在插件里定义函数
  9. var MyFun = function (obj) {
  10. alert(obj);
  11. }
  12.  
  13. //步骤2 插件的扩展方法名称
  14. $.fn.MyFrame = function (options) {
  15. //步骤3 合并用户自定义属性,默认属性(如果options为空,则使用defaults)
  16. var options = $.extend(defaults, options);
  17. }
  18. //步骤4 支持jQuery选择器
  19. //步骤5 支持链式调用(将步骤4返回)
  20. return this.each(function () {
  21. //步骤6 在插件里定义函数
  22. MyFun(this);
  23. });
  24. })(jQuery);

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

  本文乃笔记,原文来自:http://www.cnblogs.com/xcj26/p/3345556.html

jQuery插件开发方式的更多相关文章

  1. 教你开发jQuery插件(转)

    教你开发jQuery插件(转) 阅读目录 基本方法 支持链式调用 让插件接收参数 面向对象的插件开发 关于命名空间 关于变量定义及命名 压缩的好处 工具 GitHub Service Hook 原文: ...

  2. 【转】教你开发jQuery插件

    阅读目录 基本方法 支持链式调用 让插件接收参数 面向对象的插件开发 关于命名空间 关于变量定义及命名 压缩的好处 工具 GitHub Service Hook 原文:http://www.cnblo ...

  3. 开发JQuery插件(转)

    教你开发jQuery插件(转)   阅读目录 基本方法 支持链式调用 让插件接收参数 面向对象的插件开发 关于命名空间 关于变量定义及命名 压缩的好处 工具 GitHub Service Hook 原 ...

  4. jquery插件与扩展一

    要说jQuery 最成功的地方,我认为是它的可扩展性吸引了众多开发者为其开发插件,从而建立起了一个生态系统.这好比大公司们争相做平台一样,得平台者得天下.苹果,微软,谷歌等巨头,都有各自的平台及生态圈 ...

  5. 如何编写jQuery插件

    要说jQuery 最成功的地方,我认为是它的可扩展性吸引了众多开发者为其开发插件,从而建立起了一个生态系统.这好比大公司们争相做平台一样,得平台者得天下.苹果,微软,谷歌等巨头,都有各自的平台及生态圈 ...

  6. jQuery插件手把手教会(一)

    jQuery插件开发教程  ——让你的jQuery水平提升一个台阶 要说jQuery 最成功的地方,我认为是它的可扩展性吸引了众多开发者为其开发插件,从而建立起了一个生态系统.这好比大公司们争相做平台 ...

  7. 如何使用jQuery写一个jQuery插件

    jQuery插件其实是前端框架的思维,构成一个框架,个人认为必须满足以下几个基础条件:1. 可重用,2. 兼容性,3. 维护方便,虽说现在有很多比较成熟的前端框架,但是也有部分存在配置麻烦,学习成本大 ...

  8. 教你开发jQuery插件

    jQuery插件开发模式 软件开发过程中是需要一定的设计模式来指导开发的,有了模式,我们就能更好地组织我们的代码,并且从这些前人总结出来的模式中学到很多好的实践. 根据<jQuery高级编程&g ...

  9. 转:10条建议让你创建更好的jQuery插件

    在开发过很多 jQuery 插件以后,我慢慢的摸索出了一套开发jQuery插件比较标准的结构和模式.这样我就可以 copy & paste 大部分的代码结构,只要专注最主要的逻辑代码就行了.使 ...

随机推荐

  1. 由csdn开源项目评选中闹出刷票问题想到投票程序的设计

    帖子<#CSDN刷票门# 有没有人在恶意刷票?CSDN请告诉我!用24小时监控数据说话!> http://www.cnblogs.com/sanshi/p/3155946.html 网站投 ...

  2. RAC_Oracle集群服务安装RAC(案例)

    2015-01-23 Created By BaoXinjian Thanks and Regards

  3. PLSQL_闪回操作4_Flashback Drop

    2014-06-25 Created By BaoXinjian

  4. java反射1

    一.Class部分 加载类的几种方式 // 1. Class clazz = Class.forName("com.wzh.test.reflect.Person"); // 2. ...

  5. ruby中将数组转换成hash

    class Arraydef to_h(default=nil)Hash[ *inject([]) { |a, value| a.push value, default || yield(value) ...

  6. [Java] 使用Comparator排序对象

    package test.collections; import java.util.ArrayList; import java.util.Collection; import java.util. ...

  7. [ActionScript 3.0] AS3 GUID(全局唯一标识符)

    package com.controls { import flash.display.Sprite; import flash.system.Capabilities; public class G ...

  8. SQL Server2008 TIME类型

    SQL Server2008现在有了一个TIME数据类型,它允许你只存储一个时间值而没有时间.如果想要存储一个特定的时间信息而不涉及具体的日期时,这将非常的有用.TIME数据类型存储使用24小时制,它 ...

  9. js注意事项

    在数组顶部插入一条数据 data.result.unshift({ Value: 'all', Text: '请选择分类' }); 执行iframe中的javascript方法 window.fram ...

  10. Android系统下的动态Dex加载

    1 问题在Android系统中,一个App的所有代码都在一个Dex文件里面.Dex是一个类似Jar的存储了多有Java编译字节码的归档文件.因为Android系统使用Dalvik虚拟机,所以需要把使用 ...