一、方式列表:
1.jQuery.extend(Object);   // jQuery 本身的扩展方法
2.jQuery.fn.extend(Object);  // jQuery 所选对象扩展方法

二、调用示例:
1.jQuery 本身的扩展方法实例如下:

jQuery.extend({
    Meg: function (message) {
        alert(message);
    },
    MegToo: function (messageToo) {
        alert(messageToo);
    }
});

页面调用:jQuery.Meg("Hi,Stone");

其中Meg和MegToo为我的jQuery自定义扩展方法,多个扩展方法之间用英文逗号隔开。

2.jQuery 所选对象扩展方法有两种书写方式:

a)jQuery 所选对象扩展方法实例一如下:

jQuery.fn.extend({
    ShowHtml: function (showhtml) {
        jQuery(this).html(showhtml);
    }
});

页面调用:jQuery("#htmlDiv").ShowHtml("Stone,Hi!");

其中ShowHtml为我的jQuery所选对象的扩展方法,多个扩展方法之间用英文逗号隔开。

b)jQuery 所选对象扩展方法实例二代码如下:

(function (jq) {
    jq.fn.ShowHtmlToo = function (showhtml) {
        jQuery(this).html(showhtml);
    };
})(jQuery)

调用相同与方式一:jQuery("#htmlDiv").ShowHtmlToo("Stone,Hi!");

总结:

1、对象级别的插件开发

//形式一

(function($){
  $.fn.extend({
    foo3:function() {
      alert('对象级别插件extend方式1');
    },
    bar3:function() {
      alert('对象级别插件extend方式2');
    }
  })
})(jQuery);

//形式二

(function($){
  $.fn.foo4 = function() {
    alert('对象级别插件fn方式');
  }
})(jQuery);

//接收参数来控制插件的行为

(function($){
  $.fn.bar4 = function(options) {
    var defaults = {aaa:'1',bbb:'2'};
    var opts = $.extend(defaults, options);
    alert('参数值:aaa:'+opts.aaa+';bbb:'+opts.bbb);
  }
})(jQuery);

//提供公有方法访问插件的配置项值

(function($){
  $.fn.foo5 = function(options) {
    var opts = $.extend({}, $.fn.foo5.defaults, options);
    alert('参数值:aaa:'+opts.aaa+';bbb:'+opts.bbb);
  }
  $.fn.foo5.defaults = {aaa:'1',bbb:'2'};
})(jQuery);

//提供公有方法来访问插件中其他的方法

(function($){
  $.fn.bar5 = function(options) {
    $.fn.bar5.alert(options);
  }
  $.fn.bar5.alert = function(params) {
    alert(params);
  }
})(jQuery);
$(function(){
  $('#test').foo3();
  $('#test').bar3();
  $('#test').foo4();
  $('#test').bar4();
  $('#test').bar4({aaa:'3'});
  $('#test').bar4({aaa:'3',bbb:'4'});
  $('#test').foo5();
  $('#test').foo5({aaa:'5',bbb:'6'});
  $('#test').bar5('aaaa');
});

2、类级别的插件开发

类级别的插件开发最直接的理解就是给jQuery类添加类方法,可以理解为添加静态方法。典型的例子就是$.AJAX()这个函数,将函数定义于jQuery的命名空间中。关于类级别的插件开发可以采用如下几种形式进行扩展:
//2.1定义一个全局函数

jQuery.foo = function() {
  alert('添加一个新的全局函数');
}

//定义多个全局函数

jQuery.bar = function() {
  alert('再增加一个全局函数');
}

//2.2使用extend定义全局函数

jQuery.extend({
  foo1:function() {
    alert('extend 定义全局函数1');
  },
  bar1:function() {
    alert('extend 定义全局函数2');
  }
});

//2.3 使用命名空间定义函数

jQuery.plugin = {
  foo2:function() {
    alert('使用namespace定义函数');
  }
}
$(function(){
  $.foo();
  $.bar();
  $.foo1();
  $.bar1();
  $.plugin.foo2();
});

jQuery扩展方法笔记的更多相关文章

  1. jquery扩展方法(表单数据格式化为json对象)

    1.jquery扩展方法(表单数据格式化为json对象) <script type="text/javascript"> // 将表单数据序列化为一个json对象,例如 ...

  2. 使用jquery获取url及url参数的方法及定义JQuery扩展方法

    1.jquery获取url很简单,代码如下: window.location.href; 其实只是用到了javascript的基础的window对象,并没有用jquery的知识. 2.jquery获取 ...

  3. Jquery 扩展方法

    $.fn是指jquery的命名空间,加上fn上的方法及属性,会对jquery实例每一个有效. 如扩展$.fn.abc() 那么你可以这样子:$("#div").abc(); 通常使 ...

  4. jquery扩展方法

    jquery插件的开发包括两种:一种是类级别的插件开发,即给jquery添加新的全局函数,相当于给jquery类本身添加方法. jquery的全局函数就是属于jquery命名空间的函数,另一种是对象级 ...

  5. Jquery 扩展方法实现原理

    JSONP原理 首先:JSON和JSONP是不一样的概念. JSON是一种数据交换格式,而JSONP是非正式传输协议. 该协议的一个要点就是允许用户传递一个callback参数给服务端,然后服务端返回 ...

  6. jquery源码解析:jQuery扩展方法extend的详解

    jQuery中要扩展方法或者属性都是通过extend方法实现的.所谓的jQuery插件也是通过extend方法实现的. jQuery.extend扩展的是工具方法,也就是静态方法.jQuery.fn. ...

  7. jquery扩展方法案例

    -----------------扩展方法: $.extend({ "max": function (a, b) { if (a > b) return a; }, &quo ...

  8. (笔记)JQuery扩展方法实现Form表单与Json互相转换

    JQuery笔记 记两段代码,使用JQuery实现从表单获取json与后端交互,以及把后端返回的json映射到表单相应的字段上. 把表单转换出json对象 //把表单转换出json对象 $.fn.to ...

  9. jQuery扩展方法 (插件机制)

    jQuery.extend(object) 扩展jQuery对象本身. 用来在jQuery命名空间上增加新函数. 在jQuery命名空间上增加两个函数: <script> jQuery.e ...

随机推荐

  1. python爬虫从入门到放弃(四)之 Requests库的基本使用

    什么是Requests Requests是用python语言基于urllib编写的,采用的是Apache2 Licensed开源协议的HTTP库如果你看过上篇文章关于urllib库的使用,你会发现,其 ...

  2. Python教程(2.6)——list和tuple简介

    Python中内置的类型有list和tuple. List list类似于C/C++的数组,可以存储多个数字.例如你可能会需要存储一个班里所有人的名字.这时就可以用到list.list中存储的数据叫做 ...

  3. python3-如何正常使用HTMLTestRunner.py,生成自动化测试报告

    其实HTMLTestRunner.py是基于python2开发的,为了使其支持python3环境,需要对其的部分内容进行修改.下面我们通过编辑器打开HTMLTestRunner.py文件(编辑器可以选 ...

  4. 网络编程3之TCP/IP协议

    在TCP/IP协议中,最重要的协议是[TCP.UDP.IP]协议 1.TCP/IP协议特点 1)Internet上不同系统之间互联的一组协议 2)为分散和不同类型的硬件提供通用的编程接口. 3)TCP ...

  5. Android面试题目2

    1. 请描述下Activity的声明周期. onCreate->onStart->onRemuse->onPause->onStop->onRestart->onD ...

  6. Dojo初探之2:设置dojoConfig详解,dojoConfig参数详解+Dojo中预置自定义AMD模块的四种方式(基于dojo1.11.2)

    Dojo中想要加载自定义的AMD模块,需要先设置好这个模块对应的路径,模块的路径就是这个模块的唯一标识符. 一.dojoConfig参数设置详解 var dojoConfig = { baseUrl: ...

  7. Python函数之简单总结

    函数的定义 Python的函数定义使用关键字def,如定义一个返回绝对值的函数my_abs def my_abs(x): if x>=0: return x else: return -x 函数 ...

  8. EF之通过不同条件查找去重复

    Enumerable.Distinct<TSource> Method(IEnumerable<TSource>, IEqualityComparer<TSource&g ...

  9. KNN算法介绍

    KNN算法全名为k-Nearest Neighbor,就是K最近邻的意思. 算法描述 KNN是一种分类算法,其基本思想是采用测量不同特征值之间的距离方法进行分类. 算法过程如下: 1.准备样本数据集( ...

  10. C++将一个数组内容赋给另一个数组

    有两种方式: 一.进行数组遍历,依次赋值 ] = { , , , , }; ] ={ }; ;i<sizeof(arr1)/sizeof(int);i++) arr2[i] = arr1[i] ...