zoukankan      html  css  js  c++  java
  • Jquery 扩展方法

    Jquery方法重写是一个比较常用的技术,之前一直对这个没有一个系统的总结,今天总结一下Jquery方法重写。

    jquery插件的开发包括两种:一种是类级别的插件开发,即给jquery添加新的全局函数,相当于给jquery类本身添加方法。

    jquery的全局函数就是属于jquery命名空间的函数,另一种是对象级别的插件开发,即给jQuery对象添加方法。

    也可以理解为另外两种方式,一种是jQuery本身的扩展方法,另一种是jQuery所选对象的扩展方法。
    1.jQuery.extend(Object);   // jQuery 本身的扩展方法 
    2.jQuery.fn.extent(Object);    // jQuery 所选对象扩展方法
    下面就两种函数的开发做详细的说明。
     
    1、类级别的插件开发
    类级别的插件开发最直接的理解就是给jQuery类添加类方法,
    可以理解为添加静态方法。典型的例子就是$.AJAX()这个函数,将函数定义于jQuery的命名空间中。
    关于类级别的插件开发可以采用如下几种形式进行扩展:
    1.1 添加一个新的全局函数
    [javascript] 
    $.foo = function(){  
                alert("foo");  
            }  
            //调用方法   
            $.foo();  
    1.2 使用jQuery.extend(object);
    [javascript] 
    $.extend({  
                foo:function(){  
                    alert("foo");  
                },  
                bar:function(){  
                    alert("bar");  
                }  
            })  
            //调用方法   
            $.foo();  
            $.bar();  
    1.3 使用命名空间
    [javascript] 
    $.myPlugin = {  
                foo:function(){  
                    alert("foo");  
                },  
                bar:function(){  
                    alert("bar");  
                }  
            }  
            //调用方法  
            $.myPlugin.foo();  
            $.myPlugin.bar();   
     
    2、对象级别的插件开发
    [javascript] 
    $.fn.foo = function(){  
                alert("hello jquery");  
            }  
            $('#myF').foo()  
    [javascript] 
    (function($){     
                $.fn.extend({     
                    pluginName:function(opt,callback){     
                        alert("foo");     
                    }     
                })     
            })(jQuery);    
            $("#myF").pluginName();  
    [javascript]  
    (function (jq) {   
                jq.fn.foo = function (obj) {   
                    alert(obj);  
                };   
            })(jQuery)   
            $("#myF").foo("hello jquery");  

    Jquery的extend方法还有一个重载原型:  

    extend(boolean,dest,src1,src2,src3...)


          第一个参数boolean代表是否进行深度拷贝,其余参数和前面介绍的一致,什么叫深层拷贝,我们看一个例子:

    var result=$.extend( true, {},
    { name: "John", location: {city: "Boston",county:"USA"} },
    { last: "Resig", location: {state: "MA",county:"China"} } );


          我们可以看出src1中嵌套子对象location:{city:"Boston"},src2中也嵌套子对象location:{state:"MA"},第一个深度拷贝参数为true,那么合并后的结果就是: 

    result={name:"John",last:"Resig",
    location:{city:"Boston",state:"MA",county:"China"}}

           也就是说它会将src中的嵌套子对象也进行合并,而如果第一个参数boolean为false,我们看看合并的结果是什么,如下:

    var result=$.extend( false, {},
    { name: "John", location:{city: "Boston",county:"USA"} },
    { last: "Resig", location: {state: "MA",county:"China"} }
    );


         那么合并后的结果就是:

    result={name:"John",last:"Resig",location:{state:"MA",county:"China"}}
  • 相关阅读:
    c#设计模式(1)——单例模式
    Javascript变量
    悲观锁和乐观锁
    NestJs 环境 配置
    分布式查询
    Git hub 忽略 文件 、文件夹
    ES6 基础 二
    ES6 基础 一
    invalid credential, access_token is invalid or not latest hint(微信 上传图片返回 error)
    nodejs 入门一(环境及插件)
  • 原文地址:https://www.cnblogs.com/sixiangqimeng/p/3573046.html
Copyright © 2011-2022 走看看