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();
上面的写法等同于:
    $.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对象

    为插件添加全局函数和Jquery对象方法

1)添加全局函数(扩展jquery类本身):  

//步骤1 定义私有作用域
    (function ($) {
        $.sum=function(array){
         //.....
        }
 })(jQuery);
    //在使用这个插件的全局方法sum时,使用$.sum(); 
添加多个函数
//步骤1 定义私有作用域
    (function ($) {
        $.sum=function(array){
         //.....
        }
        $.average=function(array){
           //...(此处即可使用$.sum()函数)
        }
  })(jQuery);
利用$.extend()函数,扩展全局jQuery对象
(function ($) {
        $.extend({
        sum: function(array){
            //代码        
        },
        average: function(array){
            //代码        
        }
    });
  })(jQuery);
利用命名空间隔离函数
    本质是为插件所有的全局函数创建了一个命名空间,叫做jQuery.mathUtils,虽然还称之为全局函数,但实际上已经是mathUtils对象的方法。
(function ($) {
        $.mathUtils = {
        sum: function(array){
            //代码        
        },
        average: function(array){
            //代码        
        }
    };
  })(jQuery);
    调用时: $.mathUtils.sum();
           $.mathUtils.average();
2)添加jquery对象方法(扩展jquery对象)

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

  //步骤1 定义私有作用域
    (function ($) {
        //步骤2 插件的扩展方法名称
        $.fn.MyFrame = function (options) {
            
        }
    })(jQuery);
    //使用这个插件时候:$("#btn").MyFrame(options);
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);
7、回调函数

在方法中使用回调函数,需要接受一个函数作为参数,然后在方法中适当的位置上调用该函数。

//步骤1 定义私有作用域
    (function ($) {
        //步骤3 插件的默认值属性
        var defaults = {
            Id: '#id1',
            callback:function(result){//定义回调函数
              return .....;
           }
         };

        //步骤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 () {
        var result=options.callback(..)//调用回调函数
        //步骤6 在插件里定义函数
            MyFun(this);
        });
    })(jQuery);

jquery插件模板参考:http://ourjs.com/detail/52be911dd17d41eb0b000025

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值