前端學習-jQuery源碼學習

来源:http://www.cnblogs.com/sunshinegirl-7/archive/2016/03/08/5253008.html
-Advertisement-
Play Games

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在局部內,調用不到。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 回到占占推薦博客索引 bootstrap已經用了有段時間了,感覺在使用上還是比較容易接受的,在開發人員用起來上,也還好,不用考慮它的相容性,手機,平臺,PC都可以有效的相容。 bootstrap官方api:http://v3.bootcss.com/ Bootstrap~學習筆記索引 Bootstr
  • 一:需求分析 1)需要首頁,末頁功能 2)有點擊查看上一頁,下一頁功能 3)頁碼到當前可視頁碼最後一頁刷新頁面 二:功能實現思路 也是分為三部分處理 1)點擊首頁,末頁直接顯示第一頁或者最後一頁內容,當前頁面為第1頁或者最後一頁。隱藏首頁或者末頁按鈕。demo 顯示截圖 首頁狀態 和 末頁狀態代碼執
  • HTML 教程 HTML 簡介 html div 標簽介紹 html span 標簽介紹 html a 超鏈接標簽 HTML Br換行標簽介紹 HTML P段落標簽介紹 HTML br與p標簽區別 Html H 標題標簽 html px em pt長度單位 HTML B 加粗標簽 HTML stro
  • 在很多現實的場景中,有的文本框我們希望在選擇“是”的按鈕之後才出現,這就需要js控制TR的隱藏和顯示,如何控制,本文為大家揭曉 下文分享的一段代碼:選擇是的按鈕就顯示身高和體重的文本框的代碼。註意:ready方法必須要引用jquery的庫。 1.html Code <html> <head> <me
  • 看到網上很多展示html5雪花飛動的效果,確實非常引人入勝,我相信大家也跟我一樣看著心動的同時,也很好奇,想研究下代碼如何實現;雖然哦很多地方也能下載這些源碼,不過也不知道別人製作此類動畫時的思路及難點分析。 我這幾天剛好學習了一下,也趁著此刻有時間從需求分析、知識點、程式編寫一步步給大家解剖下。
  • 1. css屬性命名區分大小寫嗎? 不區分,不過一般小寫,便於理解 2. margin-top和margin-bottom對於行內(內斂inline)元素效果一樣麽? 3.padding-top和padding-bottom對於inline元素都會增加元素本身的大小麽? 回答2,3,需要瞭解html...
  • 我們知道任何一個自定義函數都是Function構造器的實例,所以我們可以通過new Function的方式來創建函數,使用語法很簡單, new Function(形參1, 形參2, ..., 形參N, 函數體) 註意,裡面的參數全部是以字元串的形式呈現。比如一個簡單的例子——要求寫一個函數, 求兩個
  • ShineJaie 原創,轉載請註明出處。 昨晚在一個交流群里看到有位網友提了一個他的面試題求助答疑。剛好我也有看到,就對這個問題思考了一下,覺得這道題對理解 JavaScript 作用域還是很有幫助的,特此又把自己的解題思路梳理了一遍,希望對其它人有所幫助。 首先看下麵試題: 1 var arr
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...