jQuery 2 的版本與jQuery 1的版本相比,沒有再考慮IE6,7,8的相容問題,因此使用時如果不用考慮IE6,7,8就用jQuery 2的版本,如果需要考慮IE6,7,8就使用jQuery 1的版本。 jQuery對象是一個以DOM為對象的特殊數組,並包含大量方法,簡單可以理解為: fun...
jQuery 2 的版本與jQuery 1的版本相比,沒有再考慮IE6,7,8的相容問題,因此使用時如果不用考慮IE6,7,8就用jQuery 2的版本,如果需要考慮IE6,7,8就使用jQuery 1的版本。
jQuery對象是一個以DOM為對象的特殊數組,並包含大量方法,簡單可以理解為:
function jQuery(){
var jquery = [dom1, dom2, dom3];
jquery.fn1 = function(){…};
jquery.fn2 = function(){…};
return jquery;
}
jQuery源碼中的精髓:初始化的設計思路,選擇器的設計方法,事件處理的設計方法,動畫效果的設計機制,ajax封裝的設計思路,插件機制的設計,相容性處理的設計方法等。
jQuery-2.0.3.js源碼一共8829行,下麵劃分幾個部分對每部分的功能作個簡單概括。
(14) 第14行到8829行,(function(window,undefined){})(); 定義自執行匿名函數,所有源碼都包括在匿名函數中。
(21, 94) 定義了一些變數和函數 jQuery = function(){};
(96, 283) jQuery.fn = jQuery.prototype = {…}; jQuery.fn.init.prototype = jQuery.fn; 這裡看到prototype,就是jQuery對象的原型,主要給JQ對象,添加一些方法和屬性
(285, 347) extend: JQ的繼承方法, 為添加後續代碼提供良好的擴展性,同時擴展插件也是從該繼承該應地中擴展。 jQuery.extent = jQuery.fn.extent = function(){…};
(349, 817) jQuery.extend({…}); 擴展一些工具方法(靜態方法),如$.trim(), $.proxy()等。
(877, 2856) Sizzle: 複雜選擇器的實現
(2880, 3042) Callbacks: 回調對象: 對函數的統一管理, add, remove, has, empty, disable, fireWith, fire 等。
(3043, 3183) Deferred: 延遲對象: 對非同步的統一管理(定時器,ajax,script,DOM等一些需要非同步處理作一下統一管理)
(3184, 3295) support: 瀏覽器的功能檢測
(3308, 3652) data(): 數據緩存,避免大數據量的元素掛載,預防記憶體泄露。
(3653, 3797) queue(): 隊列管理,入隊,出隊,執行順序的管理
(3803, 4299) attr() prop() val() addClass()等: 對元素屬性的操作
(4300, 5128) on(), trigger(): 事件操作的相關方法
(5140, 6057) DOM操作: 添加 刪除 獲取 包裝 DOM篩選等
(6058, 6620) css(): 樣式的操作
(6621, 7854) 序列化操作,數據提交和ajax方法:ajax() load() getJSON() 等
(7855, 8584) animate(): 運動(動畫)的實現方法
(8585, 8792) offset(): 位置和尺寸的方法
(8804, 8821) jQuery支持模塊化的模式
(8826) window.jQuery = window.$ = jQuery; jQuery的符號簡寫為$,把jQuery掛載到window下,這樣我們使用時就可以直接用jQuery(),或$()來調用jQuery,否則jQuery在局部內,調用不到。