精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

jQuery的運行機制和設計理念

開發 開發工具
jQuery是一個非常優秀的JavaScript庫,與Prototype,YUI,Mootools等眾多的Js類庫相比,它劍走偏鋒,從Web開發實用的角度出發,拋除了其它Lib中一些不實用的東西,為開發者提供了短小精悍的類庫。

jQuery是一個非常優秀的JavaScript庫,與Prototype,YUI,Mootools等眾多的Js類庫相比,它劍走偏鋒,從Web開發實用的角度出發,拋除了其它Lib中一些不實用的東西,為開發者提供了短小精悍的類庫。

其短小精悍,使用簡單方便,性能高效,能極大地提高開發效率,是開發Web應用的***的輔助工具之一。因此大部分開發者在拋棄Prototype而選擇jQuery來進行Web開發。

一些開發人員在使用jQuery時,由于僅僅只知道jQuery文檔中的使用方法,不明白jQuery的運行原理,時常會碰到許多的問題。這些問題大部分是使用不當而產生,極少數是jQuery的Bug。如果不明白其運行機理和核心源碼,我們也很難寫出基于jQuery類庫的高性能的程序出來。

在調試基于jQuery的程序時,我們大部分時間都要跟蹤進入jQuery對象分析其運行的狀態,但是jQuery代碼不像Ext,YUI那樣中規中舉,它的代碼有點晦澀,難懂。也就說如果想用好jQuery,一定要清楚其源碼。

jQuery的設計理念

使用jQuery之前,我們都會問jQuery是什么?jQuery是一個類庫,和prototype,mootools等類庫一樣,為Web的JavaScript開發提供輔助功能。那為什么要選用jQuery呢?在jQuery出現之前,Prototype,YUI都是很成熟的Js的框架,而且是各有各的特點。為什么要拋棄它們,而使用后起之秀的jQuery,它有什么優秀的特性吸引開發人員呢?

回答這個問題,我們得明白jQuery的設計理念。回憶或想象一下,我們在Web開發中是如何使用JavaScript?絕大多數時間都是采用getElementById在Dom文檔中找到DOM元素,然后取值或設定值,采用innerHTML取其內容或設定其內容,或進行事件的監聽(如click),在控制樣式方面,我們會進行height,width,display等的改變,達到視覺上的效果,對于Ajax方面,也是取到數據在頁面的某元素里面去添充內容。

綜之,我們就是在對DOM元素在進行操作。這個元素可能是一個或是多個。這個元素可能是Document,Window或DOM元素。這樣我們的任務就是二大部分,一是找DOM元素,二是對DOM元素進行操作。

對于用得熟練一點,不管是采用如getElementById這樣的直接查找方式還是采用如Element.lastChild這類的間接查找方式不是很難的,對于DOM元素,DOM的操作方面也是很豐富,也不是很難使用?那么要類庫做什么用呢?最難的一個問題就是瀏覽器的兼容的問題。所有的JavaScript框架都要解決這一個問題,同時簡化JavaScript的本身自帶的操作。

Prototype可以說是開創了Js類庫的先河,給我們耳目一新的感覺。它解決大部分的瀏覽器的兼容的問題。同時簡化了原始函數名長難于記憶的經常書寫出的錯的問題(采用$(xx)代替getElementById),提供了Ajax的訪問方式,擴展了Array,Object,Function,Event等JavaScript原生對象。

但是這些還是不能滿足開發的需要,比如在DOM樹中尋找DOM元素,僅僅只能是通過元素的ID,但是我們想要更方便的查找方法,同時還希望能有一個統一的入口,不要太泛,學習曲線過高或難于使用。

jQuery就是從這里出發,把所有一切都統一在jQuery對象中。使用jQuery就是使用jQuery對象。其實jQuery開創性的工作就是如其名一樣:query。它強大的查找功能令所有的框架都黯然失色。jQuery實質就是一個查詢器。在查詢器的基礎還提供對查找到的元素進行操作的功能。這樣說來jQuery就是查詢和操作的統一。查詢是入口,操作是結果。

jQuery在實現上也可以分成兩大部分,一部分是jQuery的靜態方法,也可以稱作實用方法或工具方法,通過jQuery.xxx()的jQuery命名空間直接引用。第二部分是jQuery的實例方法,通過jQuery(xx)或$(xx)來生成jQuery實例,然后通過這個實例來引用的方法。這部分的方法大多數是從采用靜態方法代理來完成功能。真正的功能性的操作都在jQuery的靜態方法中實現。這些功能細分起來,可以分成以下幾個部分:

1、Selector,查找元素。這個查找不但包含基于CSS1~CSS3的CSS Selector功能,還包含其對直接查找或間接查找而擴展的一些功能。

2、Dom元素的屬性操作。Dom元素可以看作html的標簽,對于屬性的操作就是對于標簽的屬性進行操作。這個屬性操作包含增加,修改,刪除,取值等。

3、Dom元素的CSS樣式的操作。CSS是控制頁面的顯示的效果。對CSS的操作那就得包含高度,寬度,display等這些常用的CSS的功能。

4、Ajax的操作。Ajax的功能就是異步從服務器取數據然后進行相關操作。

5、Event的操作。對Event的兼容做了統一的處理。

6、動畫(Fx)的操作。可以看作是CSS樣式上的擴展。

jQuery對象的構建

生成或構建一個jQuery對象其實就是構建并運行一個查詢器(selector)。既然是查詢,肯定會查找的結果(DOM元素),之后才會有對這些結果進行操作。那么這些查找的結果存放在哪里呢?***的地方當然是這個jQuery對象內面。查找的結果可能是一個元素,也有可以是多個元素如(NodeSet的集合的形式)。也就是說jQuery對象內面有一個集合。這個集合存放查找到DOM元素。

但是上一小節所提到jQuery對象是所有操作的統一入口,那么它的構建就不能只局限于從DOM文檔中查找到DOM元素,還有可能是從別的集合中轉移過來的Dom元素,還有可能是從HTML的字符串生成的DOM元素。

在jQuery文檔中提供了四種方式:jQuery(expression,[context]),jQuery(html),jQuery(elements),jQuery(callback)四種構尋jQuery對象的方式。其中jQuery可以用$代替。這四種是經常用到。其實jQuery的參數可以是任何的元素,都能構成jQuery對象。

舉幾個例子:

1、$($(“P”))可以看出其參數可以是jQuery對象或ArrayLike的集合。

2、$()是$(document)的簡寫。

3、$(3)會把3放到jQuery對象中集合中。

對于如$(3)這樣的其中元素(如ArrayLike集合的元素)不是DOM元素,***不要構建jQuery對象,jQuery對象的方法都是針對于DOM對象的。不是很清楚其使用的話,很有可能會導致錯誤。上面講了這么多,還是很難明白其原理的,現在從源碼的角度細細分析:

通過jQuery(xxx)的調用實現沒有生成對象,它的this是指向Window對象的。那么jQuery的那些實例方法是怎樣繼承過來的呢?看一下:

  1. var jQuery = window.jQuery = window.$ = function(selector, context)   
  2. { return new jQuery.fn.init(selector, context);   
  3. }; 

這是jQuery的總的入口,jQuery對象實際上不是通過new jQuery()而繼承其prototype的中的方法。jQuery對象實際是jQuery.fn.init函數生成的對象。在里我們可以看出對于jQuery.prototype添加一些函數集的對象的意義不大。因為我們new jQuery()是可以的,但是生成的jQuery對象在return時會被拋棄。所以***不要用new jQuery()來構建jQuery對象。jQuery對象其實就是new jQuery.fn.init。那么jQuery.fn.init.prototype上就是掛著jQuery對象的操作方法。如

  1. jQueryjQuery.fn.init.prototype = jQuery.fn; 

有時間可能會擔心在589行就實現了把jQuery.fn中的函數放到jQuery.fn.init.prototype上去,那么之后的通過jQuery.fn.extend的方法怎么辦呢?這里實際是對jQuery.fn的引用。在擴展jQuery的時候,只要把相關的函數extend到jQuery.fn就可以了?,F在我們看一下jQuery.fn.init是怎么完成工作的:

  1. init : function(selector, context) {  
  2. selectorselector = selector || document;// 確定selector存在  
  3.  
  4. // ***種情況 Handle $(DOMElement)單個Dom 元素,忽略上下文  
  5.  
  6. if (selector.nodeType) {   
  7. this[0] = selector;  
  8. this.length = 1;  
  9. return this;  
  10. }   
  11.  
  12. if (typeof selector == "string") {//selector為string   
  13. var match = quickExpr.exec(selector);   
  14. if (match && (match[1] || !context)) {  
  15. if (match[1])// 第二種情況處理$(html) -> $(array)   
  16. selector = jQuery.clean([match[1]], context);  
  17. else {// 第三種情況:HANDLE: $("#id")//處理$("#id")  
  18. var elem = document.getElementById(match[3]);  
  19. if (elem) {   
  20. // IE會返回name=id的元素 ,如果是這樣,就document.find(s)  
  21. if (elem.id != match[3])   
  22. return jQuery().find(selector);  
  23. // 構建一個新的jQuery(elem)  
  24. return jQuery(elem);   
  25. }  
  26. selector = [];  
  27. }  
  28. } else   
  29.  
  30. // 第四種情況:處理$(expr, [context])==$(content).find(expr)  
  31. return jQuery(context).find(selector);   
  32. } else if (jQuery.isFunction(selector)) // 第五種情況:處理$(function)七Shortcut for document ready   
  33. return jQuery(document)[jQuery.fn.ready ? "ready" : "load"](selector);  
  34.  
  35. // 第六種情況:處理$(elements)  
  36. return this.setArray(jQuery.makeArray(selector));   

原文鏈接:http://hi.baidu.com/dreamontheway/blog/item/0ef576393486f52d97ddd8b2.html

【編輯推薦】

  1. Django創始人:從技術工藝上考量jQuery
  2. jQuery開發者:你真的需要一個插件嗎?
  3. jQuery讓開發者戀戀不舍的秘密
  4. jQuery***實踐:精妙的自定義事件
  5. jQuery高級應用:優化Web應用程序的***絕招
責任編輯:王曉東 來源: 百度空間
相關推薦

2015-11-20 11:20:54

js開發

2009-10-22 17:10:04

CLR和JRE運行機制

2019-08-15 10:17:16

Webpack運行瀏覽器

2019-05-10 14:00:21

小程序運行機制前端

2009-02-03 14:00:20

PHP運行PHP調用PHP原理

2009-12-11 10:52:37

PHP運行機制

2015-11-16 11:17:30

PHP底層運行機制原理

2010-02-01 17:19:30

C++運行機制

2010-05-06 17:54:54

Oracle鎖

2018-12-26 16:30:09

SQL Server內部運行機制數據庫

2019-10-11 09:00:00

JavaScriptEvent Loop前端

2023-05-26 08:01:01

FacebookVelox機制

2010-01-05 16:10:21

.NET Framew

2010-02-23 10:15:22

WCF運行機制

2012-03-06 10:22:00

程序

2011-04-27 09:22:28

C#延遲加載

2016-12-13 14:12:25

程序機制

2016-12-14 14:41:20

Hello World程序運行機制

2018-03-15 16:45:47

前端JavaScriptthis

2017-05-31 13:16:35

PHP運行機制原理解析
點贊
收藏

51CTO技術棧公眾號

日本电影在线观看网站| 天天色影综合网| 色老头在线一区二区三区| 91婷婷韩国欧美一区二区| 久操国产精品| 成人免费毛片高清视频| 91av在线播放| 韩国三级在线看| 日本欧美www| 91精品推荐| 精品88久久久久88久久久| 精品久久久一区二区| 精品久久久久久久人人人人传媒| 日韩精品 欧美| 99青草视频在线播放视| 国产成人aaa| 国产精品久久久久久久久久久久久| 午夜国产小视频| 亚洲最大在线| 精品嫩草影院久久| 中文字幕第100页| 国产美女精品写真福利视频| 国产精品人人做人人爽人人添| 久久免费视频在线观看| 色哟哟一一国产精品| 你微笑时很美电视剧整集高清不卡 | 在线观看亚洲| 久久精品国产亚洲一区二区| 国产熟妇搡bbbb搡bbbb| 中文字幕亚洲在线观看| 欧美精品免费视频| 日韩亚洲在线视频| 成人免费图片免费观看| 亚洲欧美日韩国产中文在线| 日韩亚洲视频在线| 日本午夜在线视频| 成人三级伦理片| 亚洲精品免费网站| 在线观看毛片av| 欧美一级视频| 欧洲成人在线视频| 青青草av在线播放| 在线成人www免费观看视频| 日韩在线视频中文字幕| 免费看91的网站| 亚洲午夜久久| 亚洲欧美日韩高清| 在线免费观看a级片| 最新精品在线| 精品国产乱码久久久久久闺蜜 | 久久一级黄色片| 国产伦乱精品| 精品国产乱码91久久久久久网站| 91热视频在线观看| 色综合一区二区日本韩国亚洲| 在线观看91视频| 熟妇人妻va精品中文字幕 | 国产精品国内免费一区二区三区| 亚洲美女在线视频| 日本一区二区三区网站| 偷拍一区二区| 日韩国产精品亚洲а∨天堂免| 最新日本中文字幕| 999久久精品| 欧美精品一区二区久久婷婷| 一二三区视频在线观看| 136福利精品导航| 欧美精品一区二区三区蜜臀| av不卡中文字幕| 国内精品偷拍| 亚洲片在线资源| 国产视频不卡在线| 国产精品精品| 韩日精品中文字幕| 在线观看日韩中文字幕| 日韩高清不卡一区| 91久久精品国产| 性一交一乱一伧老太| 99国产欧美久久久精品| 日韩精彩视频| 国产日产一区二区三区| 亚洲一级二级在线| 欧美日韩在线不卡视频| 成人av色网站| 日韩丝袜美女视频| 国产精品无码一区二区三区免费| 久久99久久人婷婷精品综合| 日韩视频免费观看| 国产一二三四在线| 久久精品综合| 亚洲自拍偷拍网址| 五月天久久久久久| 国产精品网站在线观看| 2022中文字幕| 国产一区二区三区朝在线观看| 欧美日韩另类一区| 国产av一区二区三区传媒| 红桃成人av在线播放| 欧美不卡视频一区发布| 国产高潮久久久| 裸体在线国模精品偷拍| 国产一级二级三级精品| 国产一伦一伦一伦| 在线三级电影| 欧美午夜片在线免费观看| 亚洲午夜精品一区| 久久亚洲道色| 久久久国产影院| 午夜精品久久久久久久久久久久久蜜桃 | 国产精品综合在线视频| 快播亚洲色图| 久久大胆人体| 欧美巨大另类极品videosbest| 一边摸一边做爽的视频17国产 | 日韩在线观看免费全| 五月天婷婷综合网| 国产精品456| 亚洲看片网站| 天堂中文在线播放| 日韩一级大片在线| 毛片久久久久久| 翔田千里一区二区| 国产不卡一区二区三区在线观看| 成人p站proumb入口| 性欧美疯狂xxxxbbbb| 又色又爽又黄视频| 成人久久综合| 日韩av电影国产| 高h放荡受浪受bl| 亚洲欧美激情视频在线观看一区二区三区| 岳毛多又紧做起爽| 黑色丝袜福利片av久久| 欧美成人精品在线视频| 亚洲最新av网站| 久久久国产精品不卡| 国产极品尤物在线| 亚洲一区二区电影| 欧美日本在线视频中文字字幕| 在线观看av大片| 国产精品嫩草影院com| 欧美成人免费高清视频| 欧美1区二区| 97国产在线视频| 日韩一级片免费观看| 亚洲福利视频一区| 一级黄色免费视频| 亚洲福利久久| 国产欧美日韩在线播放| av老司机免费在线| 精品国产乱码久久久久久1区2区 | 欧美私人网站| 欧美精品123区| 波多野结衣爱爱视频| 国产精品一级在线| 黄色三级中文字幕| 国产精品丝袜在线播放| 午夜精品福利电影| 午夜视频福利在线观看| 欧美日韩亚洲天堂| 国产女主播喷水高潮网红在线| 亚洲综合三区| 日韩欧美一区二区在线观看| 精品成人av| 最新国产精品亚洲| 91成年人视频| 一区二区三区蜜桃| 亚洲一区二区三区综合| 久久午夜激情| 亚洲三区在线| 日本高清久久| 欧美精品成人在线| 国产精品日韩欧美综合| 免费一区二区三区在线观看| 日韩在线不卡| 91久久极品少妇xxxxⅹ软件| gogo高清在线播放免费| 日韩精品在线免费观看| 无码人妻丰满熟妇精品区| 中文字幕第一页久久| 手机在线观看日韩av| 99riav1国产精品视频| 日韩免费三级| 欧美区一区二区| 国产91av在线| 青青青青在线| 精品亚洲永久免费精品| 伊人网视频在线| 亚洲午夜视频在线观看| 中文字幕在线免费看线人| 免费高清视频精品| 奇米777四色影视在线看| 亚洲国产国产| 亚洲影院色无极综合| 免费毛片b在线观看| 中文字幕一精品亚洲无线一区| 亚洲AV无码成人片在线观看| 日韩欧美国产黄色| 婷婷久久综合网| 久久午夜色播影院免费高清| 亚洲理论中文字幕| 模特精品在线| av片在线免费| 色97色成人| 久久综合给合久久狠狠色| 国产精品成人3p一区二区三区| 欧美亚洲另类制服自拍| 羞羞视频在线观看免费| 伊人av综合网| 天堂在线资源库| 欧美一区二区三区日韩视频| 无码人妻丰满熟妇奶水区码| 亚洲国产精品人人做人人爽| 99国产精品无码| 久久免费美女视频| 日本人dh亚洲人ⅹxx| 免费高清在线视频一区·| 中文字幕无码精品亚洲35| 欧美在线91| 亚洲一区二区三区午夜| 自拍亚洲一区| 狠狠综合久久av| 日韩综合一区二区三区| 国产精品久久久久久亚洲调教| 日韩av一卡| 欧美激情极品视频| 91极品在线| 精品国产一区av| 不卡在线视频| 亚洲欧洲日产国码av系列天堂| 亚洲国产精品久久久久久6q | 日韩综合中文字幕| 免费一级毛片在线观看| 日韩精品免费综合视频在线播放 | 国产农村妇女aaaaa视频| 一区二区高清在线| 我家有个日本女人| 亚洲日本青草视频在线怡红院| 国产黄片一区二区三区| 91美女视频网站| 国产精品1000部啪视频| 成人av手机在线观看| 国产综合内射日韩久| 国产91色综合久久免费分享| 中文字幕欧美视频| 国产精品一区免费在线观看| 中文字幕一区二区在线观看视频 | 成人免费毛片日本片视频| 丁香婷婷综合激情五月色| 亚洲欧洲日韩综合| 粉嫩在线一区二区三区视频| 永久免费未满蜜桃| av一二三不卡影片| 三级电影在线看| 91视频观看免费| 欧美特黄一区二区三区| 国产欧美精品一区二区三区四区| 国产一区二区三区四区五区六区| 国产午夜亚洲精品午夜鲁丝片| 国产精品高清无码在线观看| 国产精品污www在线观看| 免费成人深夜夜行网站| 亚洲日本在线视频观看| 国产十六处破外女视频| 亚洲一区二区美女| 亚洲欧美精品一区二区三区| 欧美性猛交xxxxxx富婆| 91亚洲国产成人精品一区| 欧美一区二区啪啪| 国产综合视频在线| 亚洲精品综合精品自拍| 亚洲午夜精品久久久久久高潮| 欧美日本一道| 精品国免费一区二区三区| 囯产精品久久久久久| 亚洲精品美女久久久| а天堂8中文最新版在线官网| 最新国产精品亚洲| 欧美xxxx视频| 26uuu另类亚洲欧美日本一| 成人久久网站| 懂色av一区二区三区在线播放| 亚洲精品无吗| 天天综合中文字幕| 国产一区视频在线观看免费| 日韩久久一级片| 麻豆精品视频在线观看视频| 佐佐木明希电影| 国产亚洲精品免费| 欧美毛片在线观看| 在线观看国产一区二区| 亚洲AV无码一区二区三区性| 日韩精品在线视频| 黄黄的网站在线观看| 91福利视频在线观看| 成人黄色91| 欧美日韩在线播放一区二区| 久久精品亚洲欧美日韩精品中文字幕| www污在线观看| 美女视频黄久久| 好吊一区二区三区视频| 亚洲同性同志一二三专区| 亚洲伊人成人网| 日韩欧美三级在线| wwwww在线观看免费视频| 久久久久在线观看| 欧美综合影院| 久久青青草原一区二区| 综合久久久久| www亚洲成人| 337p粉嫩大胆色噜噜噜噜亚洲| 国产午夜精品理论片| 欧美视频精品一区| 亚洲精品国产手机| 日韩天堂在线视频| 都市激情亚洲综合| 国产精品一区二区三区在线| 91久久久精品国产| 特级丰满少妇一级| 久久综合九色综合97婷婷| 久久久久久免费观看| 在线不卡欧美精品一区二区三区| 日韩av免费观影| 久久久视频在线| 日韩精品三级| 四虎免费在线观看视频| 青椒成人免费视频| www.免费av| 亚州成人在线电影| 日本免费一区视频| 欧美黑人一级爽快片淫片高清| 日韩五码电影| 日韩一本精品| 奇米色777欧美一区二区| 中文字幕人妻一区二区| 精品日本美女福利在线观看| 老牛影视av牛牛影视av| 色综合视频一区中文字幕| 国产精品麻豆| 麻豆md0077饥渴少妇| 国产真实乱偷精品视频免| 亚洲天堂精品一区| 欧美最猛性xxxxx直播| 黄色大片在线免费观看| 日本一区二区三区在线播放| 亚洲人亚洲人色久| 免费黄色日本网站| 2021国产精品久久精品| 国产午夜免费福利| 日韩精品有码在线观看| 天堂av中文在线观看| 欧美日韩中文国产一区发布| 久久久久.com| 丁香花五月婷婷| 欧美日韩免费不卡视频一区二区三区 | 国产精品精品软件男同| 91精品在线一区二区| 1区2区在线观看| 成人在线免费网站| 国产欧美日韩一级| 中文精品在线观看| 在线视频观看一区| 永久免费在线观看视频| 91亚洲精品一区| 欧美日韩国产在线一区| 午夜剧场免费看| 一本大道av一区二区在线播放| 国产福利小视频在线观看| 国产欧美精品一区二区三区-老狼 国产欧美精品一区二区三区介绍 国产欧美精品一区二区 | 亚洲影院理伦片| 五月婷婷六月丁香| 国产精品第3页| 亚洲色图二区| 日韩精品视频一区二区| 日韩欧美中文字幕在线观看| aiai在线| av资源一区二区| 久久国产直播| 午夜爽爽爽男女免费观看| 亚洲福利视频免费观看| 奇米777日韩| 26uuu成人| 91麻豆国产福利在线观看| 中文字幕日日夜夜| 欧美大片在线看免费观看| 精品在线观看入口| 人妻精品久久久久中文字幕69| 黑丝美女久久久| 久cao在线| 蜜桃av噜噜一区二区三区| 精品一区在线看| 日韩黄色在线视频| 日韩视频免费在线| 99久久婷婷国产综合精品青牛牛| 不要播放器的av网站| 亚洲久本草在线中文字幕| 日韩电影免费| av一区二区三区在线观看| 美女视频黄 久久| 欧美一级视频免费观看| 久久精品国产亚洲7777|