欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

jQuery插件開發(fā)匯總

 更新時間:2016年05月15日 10:51:48   作者:Jesse131  
這篇文章主要為大家詳細介紹了jQuery插件開發(fā)的相關(guān)資料,需要的朋友可以參考下

一、jQuery插件開發(fā)兩個底層方法
jQuery.extend([deep ], target [, object1 ] [, objectN ] )
將兩個或更多對象的內(nèi)容合并到第一個對象。

1、deep 如果是true,合并成為遞歸(又叫做深拷貝)
2、target 一個對象,如果附加的對象被傳遞給這個方法將那么它將接收新的屬性,如果它是唯一的參數(shù)則將擴展jQuery的命名空間,這對于插件開發(fā)者希望向 jQuery 中添加新函數(shù)時是很有用的。
3、object1 一個對象,它包含額外的屬性合并到第一個參數(shù)
4、包含額外的屬性合并到第一個參數(shù)
當我們提供兩個或多個對象給\(.extend(),對象的所有屬性都添加到目標對象(target參數(shù)) 目標對象(第一個參數(shù))將被修改,并且將通過\).extend()返回。然而,如果我們想保留原對象,我們可以通過傳遞一個空對象作為目標對象:
var settings = $.extend({}, defaults, options);
在默認情況下,通過$.extend()合并操作是不遞歸的;

var object1 = {apple: 0,banana: {weight: 52, price: 100},cherry: 97};
var object2 = {banana: {price: 200},durian: 100};
$.extend(object1, object2);
//{apple: 0, banana: {price:200}, cherry: 97, durian: 100}
$.extend(true, object1, object2);
//{apple: 0, banana: {weight: 52, price:200}, cherry: 97, durian: 100}
jQuery.fn.extend()

在jQuery源碼中有jQuery.fn = jQuery.prototype = function(){……}即指向jQuery對象的原型鏈,對其它進行的擴展,作用在jQuery對象上面;

總結(jié)

1、jQuery.extend()能夠創(chuàng)建全局函數(shù)或選擇器,在實際開發(fā)中常使用jQuery.extend()方法作為插件方法傳遞系列選項結(jié)構(gòu)的參數(shù)
2、jQuery.fn.extend()能夠創(chuàng)建jQuery對象方法,一般用此方法來擴展jQuery的對象插件
二、jQuery插件開發(fā)通用框架

;(function($, window, document, undefined){
 //Plugin code here
})(jQuery, window, document);

使用分號是為了防止因前面的代碼沒有使用分號而導(dǎo)致插件函數(shù)不能正確解析
傳入jQuery是為了確保在匿名函數(shù)中正確的使用jQuery對象,防止多庫共存時$沖突
傳入window、document并非必須,只不過為了更快的訪問window和document
傳入undefined是為了防止undefined變量被更改,確保undefined的準確性

三、jQuery插件開發(fā)的3種形式
1、類級別開發(fā)(封裝全局函數(shù)的插件)
類級別寫法:

//方式1
;(function($, window, document, undefined){
 $.pluginName = function(){
  //Plugin implementation code here
 }; 
})(jQuery, window, document);
//方式2 當全局函數(shù)較多時
;(function($, window, document, undefined){
 $.extend({
  pluginName = function(){
   //Plugin code here
  }; 
 })
})(jQuery, window, document);

調(diào)用方法:$.pluginName();

2、對象級別的插件開發(fā)
對象級別插件寫法:

//方式1
;(function($, window, document, undefined){
 $.fn.pluginName = function(options) {
  return this.each(function() { 
  //this關(guān)鍵字代表了這個插件將要執(zhí)行的jQuery對象
  //return this.each()使得插件能夠形成鏈式調(diào)用
   var defaults = {
    //pro : value
   };
   var settings = $.extend({}, defaults, options);
   // plugin implementationcode here
  });
 }
})(jQuery, window, document);
//方式2
;(function($, window, document, undefined){
 $.fn.extend({
  pluginName : function(){
   return this.each(function(){
    // plugin code here
   });
  };
 })
})(jQuery, window, document);
//方式3 這種類型的插件架構(gòu)允許您封裝所有的方法在父包中,通過傳遞該方法的字符串名稱和額外的此方法需要的參數(shù)來調(diào)用它們。
;(function($, window, document, undefined){
  // 在我們插件容器內(nèi),創(chuàng)造一個公共變量來構(gòu)建一個私有方法 
  var privateFunction = function() { 
   // code here 
  } 
  // 通過字面量創(chuàng)造一個對象,存儲我們需要的公有方法 
  var methods = { 
   // 在字面量對象中定義每個單獨的方法 
   init: function() { 
    // 為了更好的靈活性,對來自主函數(shù),并進入每個方法中的選擇器其中的每個單獨的元素都執(zhí)行代碼 
    return this.each(function() { 
     // 為每個獨立的元素創(chuàng)建一個jQuery對象 
     var $this = $(this); 
     // 創(chuàng)建一個默認設(shè)置對象 
     var defaults = { 
      propertyName: 'value', 
      onSomeEvent: function() {} 
     } 
   
     // 使用extend方法從options和defaults對象中構(gòu)造出一個settings對象 
     var settings = $.extend({}, defaults, options); 
     // 執(zhí)行代碼 
     // 例如: privateFunction(); 
    }); 
   }, 
   destroy: function() { 
    // 對選擇器每個元素都執(zhí)行方法 
    return this.each(function() { 
     // 執(zhí)行代碼 
    }); 
   } 
  }; 
  $.fn.pluginName = function() { 
   // 獲取我們的方法,遺憾的是,如果我們用function(method){}來實現(xiàn),這樣會毀掉一切的 
   var method = arguments[0]; 
   // 檢驗方法是否存在 
   if(methods[method]) { 
    // 如果方法存在,存儲起來以便使用 
    // 注意:我這樣做是為了等下更方便地使用each() 
    method = methods[method]; 
  
   // 如果方法不存在,檢驗對象是否為一個對象(JSON對象)或者method方法沒有被傳入 
   } else if( typeof(method) == 'object' || !method ) { 
  
    // 如果我們傳入的是一個對象參數(shù),或者根本沒有參數(shù),init方法會被調(diào)用 
    method = methods.init; 
   } else { 
    // 如果方法不存在或者參數(shù)沒傳入,則報出錯誤。需要調(diào)用的方法沒有被正確調(diào)用 
    $.error( 'Method ' + method + ' does not exist on jQuery.pluginName' ); 
    return this; 
   } 
  
   // 調(diào)用我們選中的方法 
   // 再一次注意我們是如何將each()從這里轉(zhuǎn)移到每個單獨的方法上的 
   return method.call(this); 
  } 
})(jQuery, window, document);
//方式4 面向?qū)ο蟮牟寮_發(fā) 將原型和構(gòu)造函數(shù)組合使用,使得通過構(gòu)造函數(shù)創(chuàng)建的每個實例都能繼承相關(guān)屬性與方法
;(function($, window, document, undefined){
 //定義Beautifier的構(gòu)造函數(shù)
 var Beautifier = function(ele, opt) {
  this.$element = ele;
  this.defaults = {
  'color': 'red',
  'fontSize': '12px',
  'textDecoration':'none'
  };
  this.options = $.extend({}, this.defaults, opt);
 }
 //定義Beautifier的原型方法
 Beautifier.prototype = {
  beautify: function() {
  return this.$element.css({
   'color': this.options.color,
   'fontSize': this.options.fontSize,
   'textDecoration': this.options.textDecoration
  });
  }
 }
 //在插件中使用Beautifier對象
 $.fn.myPlugin = function(options) {
  //創(chuàng)建Beautifier的實體
  var beautifier = new Beautifier(this, options);
  //調(diào)用其方法
  return beautifier.beautify();
 }
})(jQuery, window, document);

調(diào)用方法:$.fn.pluginName();

3、通過$.widget()應(yīng)用jQuery UI的部件工廠方式創(chuàng)建
用來開發(fā)更高級jQuery部件的,該模式開發(fā)出來的部件帶有很多jQuery內(nèi)建的特性,比如插件的狀態(tài)信息自動保存,各種關(guān)于插件的常用方法等

四、編寫JQuery插件需要注意的地方
1、插件的推薦命名方法為:jquery.[插件名].js
2、所有的對象方法都應(yīng)當附加到JQuery.fn對象上面,而所有的全局函數(shù)都應(yīng)當附加到JQuery對象本身上。
3、可以通過this.each() 來遍歷所有的元素
4、在jQuery開發(fā)中,this關(guān)鍵詞通常引用的是當前正在操作的DOM元素,但在當前的jQuery插件上下文中,this關(guān)鍵詞引用的是當前jQuery實例自身,唯一的例外是在當前jQuery集合中遍歷所有元素時,$.each循環(huán)體內(nèi)的this引用的是這一輪遍歷所暴露的DOM元素
5、所有方法或函數(shù)插件,都應(yīng)當以分號結(jié)尾,否則壓縮的時候可能會出現(xiàn)問題。為了更加保險寫,可以在插件頭部添加一個分號(;),以免他們的不規(guī)范代碼給插件帶來 影響。
6、插件應(yīng)該返回一個JQuery對象,以便保證插件的可鏈式操作。

以上就是jQuery插件開發(fā)的知識點匯總,希望對大家的學(xué)習(xí)有所幫助。

相關(guān)文章

  • 基于jquery實現(xiàn)復(fù)選框全選,反選,全不選等功能

    基于jquery實現(xiàn)復(fù)選框全選,反選,全不選等功能

    本文分享一段基于jQuery實現(xiàn)的復(fù)選框全選、全不選、反選功能的代碼,有需要的小伙伴可以參考一下
    2015-10-10
  • jquery模擬進度條實現(xiàn)方法

    jquery模擬進度條實現(xiàn)方法

    這篇文章主要介紹了jquery模擬進度條的方法,實例分析了jquery操作頁面元素樣式實現(xiàn)頁面動態(tài)效果的方法,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-08-08
  • jQuery實現(xiàn)類似淘寶購物車全選狀態(tài)示例

    jQuery實現(xiàn)類似淘寶購物車全選狀態(tài)示例

    今天寫了個類似淘寶購物車全選狀態(tài),看下截圖,效果還不錯吧,具體的實現(xiàn)html及jQuery代碼如下,感興趣的朋友可以參考下哈
    2013-06-06
  • jquery validate和jquery form 插件組合實現(xiàn)驗證表單后AJAX提交

    jquery validate和jquery form 插件組合實現(xiàn)驗證表單后AJAX提交

    在ajax流行的時代,好像很少能看見傳統(tǒng)的同步提交表單方式了,是啊我們當然要用更加給力的AJAX來實現(xiàn)異步無刷新提交表單,好了開始今天的jQuery之旅吧,今天我們來利用jquery.validate和jquery.form 插件組合實現(xiàn)驗證表單后AJAX提交 ,需要的朋友可以參考下
    2015-08-08
  • jQuery阻止同類型事件小結(jié)

    jQuery阻止同類型事件小結(jié)

    事件追加:點擊green元素會依次執(zhí)行g(shù)reen click1、green click2兩個事件(同一元素的同類型事件),感興趣的朋友可以參考下哈
    2013-04-04
  • 修改或擴展jQuery原生方法的代碼實例

    修改或擴展jQuery原生方法的代碼實例

    這篇文章主要介紹了修改或擴展jQuery原生方法的代碼實例,本文用一個擴展jquery原生方法val的例子,講解了如何對jquery原生方法修改或擴展,需要的朋友可以參考下
    2015-01-01
  • jquery插件orbit.js實現(xiàn)圖片折疊輪換特效

    jquery插件orbit.js實現(xiàn)圖片折疊輪換特效

    Orbit是一個設(shè)計良好并且容易使用的jQuery圖片滑動幻燈片插件,它除了支持圖片滾動切換展示外,還支持針對內(nèi)容的滾動。插件的定制性相當高,它提供了多個參數(shù)的設(shè)置,通過設(shè)置你可以將它打造成完全符合你要求的樣式。
    2015-04-04
  • jQuery學(xué)習(xí)筆記之jQuery.extend(),jQuery.fn.extend()分析

    jQuery學(xué)習(xí)筆記之jQuery.extend(),jQuery.fn.extend()分析

    給jQuery做過擴展或者制作過jQuery插件的人這兩個方法東西可能不陌生. jQuery.extend([deep],target,object1,,object2...[objectN]) jQuery.fn.extend([deep],target,object1,,object2...[objectN]) 這兩個屬性都是用于合并兩個或多個對象的屬性到target對象.
    2014-06-06
  • jQuery仿淘寶網(wǎng)產(chǎn)品品牌隱藏與顯示效果

    jQuery仿淘寶網(wǎng)產(chǎn)品品牌隱藏與顯示效果

    這篇文章主要介紹了jQuery仿淘寶網(wǎng)產(chǎn)品品牌隱藏與顯示效果,通過jquery鼠標事件實現(xiàn)頁面元素的顯示與隱藏功能,非常具有實用價值,需要的朋友可以參考下
    2015-09-09
  • jQuery layui常用方法介紹

    jQuery layui常用方法介紹

    layer是一款近年來備受青睞的web彈層組件,她具備全方位的解決方案,致力于服務(wù)各水平段的開發(fā)人員,您的頁面會輕松地擁有豐富友好的操作體驗,接下來通過本文給大家介紹layui常用方法,需要的朋友參考下
    2016-07-07

最新評論