jQuery定义插件的方法
有些WEB开发者,会引用一个JQuery类库,然后在网页上写一写$("#"),$("."),写了几年就对别人说非常熟悉JQuery。我曾经也是这样的人,直到有一次公司里的技术交流,我才改变了自己对自己的看法。
扩展jquery的时候。最核心的方法是以下两种:
$.extend(object)可以理解为jquery添加一个静态方法
$.fn.extend(object)可以理解为jquery实例添加一个方法
$.extend(object)
例子:
/*$.extend定义与调用 *****************************************/ $.extend({fun:function(){alert("执行方法一");}});//定义 $.fun();//调用 $.fn.extentd(object) /*$.fn.extend定义与调用 *****************************************/ $.fn.extend({fun:function(){alert("执行方法");}}); $(this).fun(); //等同于 $.fn.fun=function(){alert("执行方法三");} $(this).fun();
定义jquery插件的基本结构
1. 定义作用域:
为插件定义一个私有作用域。外界代码不能直接访问插件内部。插件内部代码不受外界干扰,也不会污染到全局变量。
//step定义JQuery的作用域 (function($){ })(jQuery);
2.为插件添加扩展方法:
//step01定义JQuery的作用域 (function($){ //step02插件的扩展方法名称 $.fn.easySlider=function(options){ } })(jQuery);
3.设置默认值:
//step定义JQuery的作用域 (function($){ //step-a插件的默认值属性 vardefaults={ prevId:‘prevBtn‘, prevText:‘Previous‘, nextId:‘nextBtn‘, nextText:‘Next‘ //…… }; //step插件的扩展方法名称 $.fn.easySlider=function(options){ //step-b合并用户自定义属性,默认属性 varoptions=$.extend(defaults,options); } })(jQuery);
其中:varoptions=$.extend(defaults,options)的含义了。表示options去覆盖了defaults的值,并把值赋给了options。
在插件环境中,就表示用户设置的值,覆盖了插件的默认值;如果用户没有设置默认值的属性,还是保留插件的默认值。
4.支持jquery选择器:
//step定义JQuery的作用域 (function($){ //step-a插件的默认值属性 vardefaults={ prevId:‘prevBtn‘, prevText:‘Previous‘, nextId:‘nextBtn‘, nextText:‘Next‘ //…… }; //step插件的扩展方法名称 $.fn.easySlider=function(options){ //step-b合并用户自定义属性,默认属性 varoptions=$.extend(defaults,options); //step支持JQuery选择器 this.each(function(){ }); } })(jQuery);
5.支持JQuery的链接调用:
为了能达到链接调用的效果必须要把循环的每个元素return
//step定义JQuery的作用域 (function($){ //step-a插件的默认值属性 vardefaults={ prevId:‘prevBtn‘, prevText:‘Previous‘, nextId:‘nextBtn‘, nextText:‘Next‘ //…… }; //step插件的扩展方法名称 $.fn.easySlider=function(options){ //step-b合并用户自定义属性,默认属性 varoptions=$.extend(defaults,options); //step支持JQuery选择器 //step支持链式调用 returnthis.each(function(){ }); } })(jQuery);
6.插件里的方法:
在插件里定义的方法,外界不能直接调用,我在插件里定义的方法也没有污染外界环境。
//step01定义JQuery的作用域 (function($){ //step03-a插件的默认值属性 vardefaults={ prevId:‘prevBtn‘, prevText:‘Previous‘, nextId:‘nextBtn‘, nextText:‘Next‘ //…… }; //step06-a在插件里定义方法 varshowLink=function(obj){ $(obj).append(function(){return"("+$(obj).attr("href")+")"}); } //step02插件的扩展方法名称 $.fn.easySlider=function(options){ //step03-b合并用户自定义属性,默认属性 varoptions=$.extend(defaults,options); //step4支持JQuery选择器 //step5支持链式调用 returnthis.each(function(){ //step06-b在插件里定义方法 showLink(this); }); } })(jQuery);
通过以上内容给大家介绍了jQuery定义插件的方法,希望大家喜欢。