-
jQuery一共13個模塊,從2.1版開始jQuery支持通過AMD模塊劃分,jQuery在最開始發布的1.0版本是很簡單的,只有CSS選擇符、事件處理和AJAX交互3大塊。其發展過程中,有幾次重要的變革。 五大塊: jQuery按我的理解分為五大塊,選擇器、DOM操作、事件、AJAX與動畫,那么為什么有13個模塊?因為jQuery的設計中最喜歡的做的一件事,就是抽出共同的特性使之“模塊化”,當然也是更貼近S.O.L.I.D五大原則的“單一職責SRP”了,遵守單一職責的好處是可以讓我們很容易地來維護這個對象查看全部
-
The Write Less,Do More(寫更少,做更多),無疑就是jQuery的核心理念,簡潔的API、優雅的鏈式、強大的查詢與便捷的操作。從而把jQuery打造成前端世界的一把利劍,所向披靡!查看全部
-
pushStack 需要回顧查看全部
-
pushStack查看全部
-
end方法就是回溯到上一個Dom合集,因此對于鏈式操作與優化,這個方法還是很有意義的查看全部
-
首先對 JS 和 jQuery 都能夠熟練使用并完成至少兩個中型項目,對 JS 和 jQuery 都形成自己的一套理解和感悟,對各版本瀏覽器的差異和兼容性十分熟悉,這時候再去看源碼解析,會感覺恍然大悟,更能深刻理解運行原理和封裝的妙處查看全部
-
jQuery多庫共存處理,也叫無沖突處理。解決方案:noConflict函數,將變量$的控制權讓給第一個實現它的那個庫,例: jQuery.noConflict(); //使用jQuery jQuery("aaron").show(); //使用其他庫的$() $("arron").style.display = "block"; 注意:noConflict函數必須在導入jQuery之后,并在導入另一個導致沖突的庫之前使用。 Var _jQuery = window.jQuery, _$ = window.$; jQuery.noConflict = function( deep ) { if ( window.$ === jQuery ) { window.$ = _$; } if ( deep && window.jQuery === jQuery ) { window.jQuery = _jQuery; } return jQuery; }; 首先,我們先判斷下當前的的$空間是不是被jQuery接管了,如果是則讓出控制權給之前的_$引用的庫,如果傳入deep為true的話等于是把jQuery的控制權也讓出去了。查看全部
-
jQuery的3種針對文檔加載的方法: $(document).ready(function(){ //... }) $(function(){ //... }) $(document).load(function(){ //... }) ready和load誰先執行:ready先執行,load后執行 DOM文檔加載步驟: (1)解析HTML結構 (2)加載外部腳本和樣式文件 (3)解析并執行腳本代碼 (4)構造HTML DOM模型//ready (5)加載圖片等外部文件 (6)頁面加載完畢//load jQuery兼容的具體策略:針對高級的瀏覽器 針對IE的加載檢測:使用doScroll方法調用。原理:IE在非iframe中時,只有不斷的通過執行doScroll判斷DOM是否加載完畢。如果頁面Dom未加載完成時,調用doScroll會導致異常,所以使用try-catch來捕獲異常。反之,頁面加載完成,則調用doScroll不會出現異常。查看全部
-
jQuery的類數組對象結構(jQuery內部的存儲結構): 9種方法的重載:選擇器,dom的處理,dom的加載 1. jQuery([selector,[context]]) 2. jQuery(element) 3. jQuery(elementArray) 4. jQuery(object) 5. jQuery(jQuery object) 6. jQuery(html,[ownerDocument]) 7. jQuery(html,[attributes]) 8. jQuery() 9. jQuery(callback) 函數內部保證通過new操作符構建的方法,例: var a = function(s){ //強制轉換為對象 if(!(this instanceof a)){//this第一次指代window,第二次指代new a(s)的實例 return new a(s); } //邏輯處理段 this.length = 1; return this;//this指向new出來的實例對象 }查看全部
-
庫和框架設計要點:解決命名空間和變量污染的問題 jQuery的解決辦法:利用js函數作用域的特性,采用立即調用表達式包裹自身的方法解決 jQuery使用()將匿名函數括起來,再加一對小括號自調用 (function(window,undefined){ var jQuery = function(){} //... window.jQuery = window.$ = jQuery; })(window); 1.window和undefinded都是為了減少變量查找所經過的scope作用域,即查找局部變量比查找全局變量更快; 2.undefined并不是js數據類型的undefined,而是普通的變量名 全局變量是魔鬼,匿名函數可以有效的保證在頁面上寫入js,而不會造成全局變量的污染,通過小括號,讓其加載的時候立即初始化,就形成一個單例模式的效果,從而只會執行一次查看全部
-
1、window和undefined都是為了減少變量查找所經過的scope作用域。當window通過傳遞給閉包內部之后,在閉包內部使用它的時候,可以把它當做一個局部變量,顯然比原先在window scope下查找的時候更快一些。 2、undefined也是同樣的道理,其實這個undefined并不是JavaScript數據類型的undefined,而是一個普普通通的變量名。只是因為沒給它傳遞值,它的值就是undefined,undefined并不是JavaScript的保留字查看全部
-
任何庫和框架設計的第一個要點就是解決命名空間與變量污染的問題。jQuery就是利用了JavaScript函數作用域的特性,采用立即調用表達式包裹資深的方法來解決這個問題。查看全部
-
jQuery一共13個模塊,從2.1版開始jQuery支持通過AMD模塊劃分,jQuery在最開始發布的1.0版本是很簡單的,只有css選擇符、事件處理和AJAX交互3大模塊。 jQuery按我的理解分為五大塊,選擇器,DOM操作、事件、AJAX與動畫。 .ajaxComplete() .ajaxError() .ajaxSend() .ajaxStart() .ajaxStop() .ajaxSuccess() 底層接口: jQuery.ajax() jQuery.ajaxSetup() 快捷方法: jQuery.get() jQuery.getJSON() jQuery.getScirpt() jQuery.post()查看全部
-
當一個對象的改變需要同時改變其它對象,并且它不知道具體有多少對象需要改變的時候,就應該考慮使用觀察者模式。查看全部
-
function Aaron(List, callback) { setTimeout(function() { var task; if (task = List.shift()) { task(); //執行函數 } if (List.length > 0) { //遞歸分解 arguments.callee(List) } else { callback() } }, 25) } function show(data){ $("body").append('<li>'+ data +'</li>') } Aaron([ function() { show('a') }, function() { show('b') }, function() { show('c') } ], function() { show('callback') }) var callbacks = $.Callbacks(); callbacks.add(function() { show('callbacksA'); }) callbacks.add(function() { show('callbacksB'); }) callbacks.fire();查看全部
舉報
0/150
提交
取消