1. 程式人生 > >編寫自己的jquery插件之基礎

編寫自己的jquery插件之基礎

def 背景 壓縮 ons default fun 規範 例子 使用

1、編寫jquery插件要遵循命名規範,通常情況下,jquery插件采用這種模式進行命名:jquery.pluginName.js,壓縮版為:jquery.pluginName.min.js

2、編寫jquery插件的方式有3種,第一種是通過jquery函數的原型屬性來編寫插件。第二種是采用jQuery.extend()方法。第三種是使用強大的jQuery UI Widget Factory編寫插件。這裏我選擇用jQuery函數的原型屬性來編寫。

  2.1 jQuery源碼中有這樣一句代碼:jQuery.fn = jQuery.prototype = { //jquery goes here// },這句代碼的意思是,把jQuery函數的原型對象賦值給jQuery的fn屬性,在jQuery.fn屬性上添加方法就相當於在jQuery的原型對象上添加方法。我們就是通過jQuery.fn來編寫jQuery插件。

  2.2 一個小例子:

1 (function($){
2     $.fn.highlight1= function(){
3       this.css(‘backgroundColor‘, ‘#fffceb‘).css(‘color‘, ‘#d85030‘);  
4       return this;
5     }
6 })(jQuery);

   在這個例子中,我們為jquery擴展了一個highlight1()方法,我們可以像調用jQuery默認的方法那樣調用我們擴展的這個highlight1()方法。 1 $(selector).highlight1();

。這句代碼會把匹配的選擇器的背景顏色和字體顏色變成highlight1()方法中設置的顏色。

    這樣,一個簡單的jQuery插件就編寫完成了。可能有的朋友會疑惑,為什麽要renturn this?原因是我們自己擴展的jQuery方法也要能支持jQuery最精髓的地方—鏈式調用。return this就是讓我們自己擴展的jQuery方法也支持連是調用。因為這裏的this也是一個jQuery對象,所以返回它就可以接著鏈式調用其他方法了。

  2.3 對上述例子的完善。

     上面的例子有個不太完善的地方,調用highlight1()方法的時候,只能將匹配的元素的背景和字體顏色變成我們預先設置好的顏色,這樣不好。最好是能讓用戶自定義他們想要的顏色,接下來我們修改一下highlight1()方法。具體方法是我們可以給方法加一個參數,讓用戶自己把參數用對象傳進去。

 1  (function($){
 2      $.fn.highlight2= function(options){ 
 3          //要考慮到各種情況;
 4          //options為undefined;
 5          //options只有部分key;
 6          var bgcolor = options && options.backgroundColor || ‘#fffceb‘;
 7          var color = options && options.color || ‘#d85030‘;
 8          this.css(‘backgroundColor‘, bgcolor).css(‘color‘, color);  
 9          return this;
10     }
11 })(jQuery);

    用戶可以像jQuery的css()方法那樣給highlight2()方法傳參數,來自己制定背景和字體顏色:

1 $(selector).highlight({
2     backgroundColor:‘#ccc‘,
3     color:‘#ff0000‘ 
4 });

    我們也可以讓用戶修改默認值,用戶設置默認值後再調用highlight2()方法就不用每次都傳值了。

 1 (function($){
 2     $.fn.hightlight3 = function(){
 3         // 合並默認值和用戶設定值:
 4         var opts = $.extend({}, $.fn.highlight.defaults, options);
 5         this.css(‘backgroundColor‘, opts.backgroundColor).css(‘color‘,     
 6         opts.color);
 7         return this;
 8     }
 9 
10     //設定默認值
11     $.fn.highlight3.defaults = {
12         color:"#d85030",
13         backgroundColor:"#fff8de"
14     }
15 })(jQuery)
16 
17 //用戶使用時,只需一次性設定默認值
18 $.fn.highlight3.defaults.color = ‘#fff‘;
19 $.fn.highlight3.defaults.backgroundColor = ‘#000‘;
20 
21 //然後調用highlight3()方法就可以了,匹配元素的背景和字體顏色就都是用戶自己定義的默認值了
22 $(selector).highlight3();

    這樣,我們的highlight()方法就比較完美了。

    也許你註意到了,在最終版的highlight()方法中,用到了$.extend()方法,這個方法我會在下一篇博客中詳細介紹。並且在下一篇博客中,我會介紹一下針對特定元素的擴展。

編寫自己的jquery插件之基礎