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"}}

Jquery 扩展方法,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。