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

jQuery1.5的六大細節改進:DOM操作更簡單

開發 前端
jQuery 1.5 beta1出來了,這個1.5版本最大的更新是AJAX的完全重寫,提供了更強的可擴展性。但是受制于精力和篇幅,對新的AJAX的分析還是放到下回,本篇先簡單介紹一下細節方面的改進。

jQuery 1.5 beta1出來了,從學習跟進上來說,這一次已經比較晚了(我竟然不知道1.5什么時候出的alpha,就這么beta了)。

這個1.5版本最大的更新是AJAX的完全重寫,提供了更強的可擴展性。但是受制于精力和篇幅,對新的AJAX的分析還是放到下回,本篇先簡單介紹一下細節方面的改進。

jQuery._Deferred和jQuery.Deferred

首先不得不說這兩個新生事物,因為他們是作為基礎設施存在,不把這兩個東西講明白了,有些問題根本沒辦法解釋。

首先,jQuery.Deferred是jQuery._Deferred的增強版,因此對于這個問題,從jQuery._Deferred入手,就能說明一大半的問題。

什么是Deferred?從字面上看,我的第一反應是“延遲加載”,首字母大寫的應該是“類型”的定義,所以這大概是一個“透明提供延遲加載功能”的類型吧。然而實際上,雖然確實帶有那么一點點“延遲”的意思,這個東西卻不是用來實現延遲加載的。

簡單來說,jQuery._Deferred是一個函數隊列,他的作用有以下幾點:

  • 保存若干個函數。
  • 在特定的時刻把保存著的函數全部執行掉。
  • 執行過后,新進來的函數會立刻執行。

感覺是不是和啥東西很像?對,jQuery的ready函數就是這樣的邏輯,實際中jQuery 1.5中的ready函數也確實被嫁接到這上面去了。

jQuery._Deferred提供下面的接口:

  • done:function(fn1, fn2, ...)的形式,用于把函數添加到隊列中。
  • fire:function(context, args)的形式,使用context指定this對象,args指定參數,調用隊列中所有函數。fire被調用后,_Deferred會進入isResolved狀態,未來對done的調用不會再保存函數,而是直接調用函數。
  • resolve:相當于調用fire(this, arguments),一個簡化的方法。
  • isResolved:用來判斷_Deferred是否在isResolved狀態,具體參考前面的fire函數的解釋。
  • cancel:取消掉整個隊列,這樣不管未來是不是fire,隊列中的函數都不會再被調用。

說明白了jQuery._Deferred,再來看看jQuery.Deferred。這個東西其實就是2個_Deferred組成的,第一個稱為deferred,用于保管“正常”狀態下的函數;第二個稱為failDeferred,用于保管“出錯”狀態下的函數。同時jQuery.Deferred提供了一些新的接口:

  • then:function(done, fail)的形式,把done添加進deferred,把fail添加進failedDeferred。
  • fail:相當于failDeferred的done函數。
  • fireReject:相當于failDeferred的fire函數。
  • reject:相當于failDeferred的resolve函數。
  • isRejected:相當于failDeferred的isResolved函數。

同時jQuery.Deferred取消了cancel函數。

那么這個是啥用的呢?有“正常”和“出錯”2個狀態,同時又是異步的,很容易就能想到……對,給AJAX用的,在下一篇分析中再詳細說明。

jQuery.ready的變化

因為有了jQuery._Deferred這個東西,jQuery.ready函數變成依賴于函數隊列,具體的變化有:

原來的readyList變量已經不再是一個數組,而變成了jQuery._Deferred對象。

原本在DOMContentLoaded時,調用readList中所有函數的邏輯,現在也使用了jQuery._Deferred中,原來的代碼:

  1. while ( (fn = ready[ i++ ]) ) {  
  2. fn.call( document, jQuery );  

變成了:

  1. readyList.fire( document , [ jQuery ] ); 

jQuery.parseXML函數

新增了靜態函數jQuery.parseXML,用于提供瀏覽器兼容的從字符串轉為XML文檔的功能。

該函數的邏輯網上有很多,jQuery也沒有特別的地方,大致分為以下2種:

對于標準瀏覽器,使用DOMParser對象:

  1. var parser = new DOMParser();  
  2. var xml = parser.parseFromString(text, 'text/html'); 

對于IE,使用Microsoft.XMLDOM對象:

  1. var parser = new ActiveXObject('Microsoft.XMLDOM');  
  2. parser.async = 'false';  
  3. parser.loadXML(text);  
  4. var xml = parser.documentElement;  

data部分

添加了jQuery.hasData函數,用于判斷一個元素是否有jQuery附加上去的數據。

修改了jQuery.expando的實現,在原來單純地取當前時間的基礎上,添加了一個隨機數:

  1. expando = "jQuery" +   
  2. ( jQuery.fn.jquery + Math.random() ).replace( /\D/g, "" ); 

這樣保證在同一時間,引入多個jQuery副本,這幾個副本之間的expando不會相互沖突,導致元素上的data變得錯亂。一般來說,是不會引入多個jQuery副本的,但是使用SealJS等的時候,配置不當的話,也是很容易出現此類問題的。

DOM操作部分

原本的hasClass、addClass、removeClass函數都需要將元素的class屬性分隔為數組,在1.4.4版本中,通過\n或\t進行分隔,在1.5中增加了一個\r,用于對應Windows平臺下的換行符(\r\n)。

jQuery.fn.attr函數,1.4.4版本中拒絕從TextNode和CommentNode上獲取屬性,在1.5版本中添加了一個AttributeNode(noteType == 2)。

在1.4.4版本中,jQuery會在頁面unload的時候清理掉由jQuery維護的所有DOM事件,這是為了避免IE的內存泄露問題。但是在1.5中這一段代碼不見了,不知是出于什么考慮。

對于IE下使用cloneNode復制節點,會將事件也一起復制過來的問題,1.4.4中是采取復制innerHTML的方式給予解決,而在1.5中則采納了mootools團隊提供的方法,使用cloneFixAttribute函數修正該問題。

cloneFixAttribute函數們于jQuery 1.5 beta1源碼文件的5388-5438行,處理IE的BUG的原理很簡單,當然前端里一些看似簡單的東西,都是很難發現的:

  • IE中有個叫clearAttributes的函數,會清除到節點上的所有屬性,順便把和事件相關的onclick之類的屬性也去掉了。在復制出來的節點上調用這個函數,就會把屬性清得干干凈凈。
  • IE中還有一個叫mergeAttributes的函數,把一個節點的屬性復制到另一個節點上,但他不會把和事件相關的屬性復制過去。所以再把原始節點調用mergeAttributes,把屬性重新放回復制出來的節點上,這就相當于起到了去除事件相關屬性的作用。

另外cloneFixAttribute函數還處理了非常多IE6-8在cloneNode上的兼容性問題,非常值得詳細研究。

AJAX部分

AJAX已經完全重寫了,只留下一點邊邊角角保留著1.4.4版本的風采,這里只抽取一部分進行簡單的說明。

原來版本中$.get和$.post的實現非常相似,具體來說僅有一個method配置項不同,因此在1.5版本中被合并起來了:

  1. $.each(['get''post'], function(i, method) {  
  2. $[method] = function() { ... };  
  3. });  

ajaxSetup函數現在加了一行return this;,可以鏈式調用了。

serializeArray函數現在統一將value中的換行符替換成Windows的風格(\r\n)。

AJAX的回調函數中,作為參數的對象不再是原生的XMLHTTPRequest,而是jQuery自己封裝的稱為jXHR的對象,這個對象提供了XMLHTTPRequest的常用接口。

原本對于“請求成功”的瀏覽器狀態碼,除200-299以及304外,還有一個1223,來自于IE的一個BUG,會將204的狀態碼變成1223。現在因為有了jXHR對象,相當于中間多了一層,因此從jXHR對象獲取statusCode不會出現1223的情況,已經被變回204了。

jQuery.ajax函數的配置項中多了一個statusCode項,其結構為map,用于指定返回特定狀態碼時的回調函數,大致形式如下:

  1. jQuery.ajax({  
  2. url: 'xxx',  
  3. statusCode: {  
  4. 200: function() { 處理請求成功 },  
  5. 404: function() { 處理頁面未找到 },  
  6. 503: function() { 處理Service Unavailable }  
  7. }  
  8. });  

再添加了這個回調后,jQuery.ajax函數已經有非常多的回調函數,其觸發過程如下:

  • 根據返回的狀態碼,觸發success或者error回調。
  • 根據狀態碼,觸發對應的statusCode回調。
  • 觸發complete回調。
  • 觸發全局ajaxComplete回調。
  • 如果此時沒有正在執行的AJAX,觸發全局ajaxStop回調

其他細節

入口函數jQuery.fn.init現在多了一個參數,值始終為rootjQuery,用于加速init函數中對rootjQuery變量的查找速度(減少了一層作用域):

  1. //jQuery 1.5 beta1 源碼23行  
  2. jQuery = function( selector, context ) {  
  3. // The jQuery object is actually just the init constructor 'enhanced'  
  4. return new jQuery.fn.init( selector, context, rootjQuery );  
  5. }  
  6.  

jQuery對象支持繼承了,具體的修改是將幾處直接調用jQuery的代碼改為了對this.constructor的調用:

  1. 202行:return this.constructor( context ).find( selector );  
  2. 253行:var ret = this.constructor();  
  3. 334行:return this.prevObject || this.constructor(null); 

同時還提供了jQuery.subclass函數用于創建一個繼承自jQuery的類型,由于不是很常用jQuery,更是從來沒有用到過需要繼承jQuery的情況,因此也不方便說這個功能的作用有多大。

原文鏈接:http://www.otakustay.com/jquery-1-5-enhanced-detail/

【編輯推薦】

  1. jQuery 1.5第一個Beta版發布 付下載
  2. jQuery入門:數組的三種類型三種操作
責任編輯:陳貽新 來源: Gray Zhang的博客
相關推薦

2011-01-21 15:02:14

jQuerywebJavaScript

2016-12-01 13:43:27

智慧城市物聯網

2011-06-10 13:49:58

SEO

2009-08-28 15:25:38

C#線程操作

2009-12-04 17:01:18

Windows 7操作

2012-04-23 10:08:53

2024-10-22 14:42:14

2021-08-12 14:31:52

邊緣計算云計算數據

2022-01-23 10:44:39

零信任網絡安全網絡攻擊

2023-08-31 22:12:51

低代碼隱患技術

2013-08-23 10:42:03

Hadoop

2016-08-18 21:55:00

2023-05-11 11:36:56

云計算云供應商

2010-09-09 10:54:58

2023-07-24 11:01:32

2016-07-06 11:16:47

2011-03-16 10:44:19

2013-08-23 10:18:06

Hadoop

2023-10-18 10:48:44

Python解釋器

2010-07-30 13:15:17

Flex優勢
點贊
收藏

51CTO技術棧公眾號

亚洲精品社区| 欧美午夜网站| 久久蜜桃一区二区| 国产精品观看在线亚洲人成网| 国产成人精品无码免费看夜聊软件| 性xxxxfjsxxxxx欧美| 波波电影院一区二区三区| 7m精品福利视频导航| 中国黄色a级片| 欧美高清你懂的| 怡红院av一区二区三区| 国产亚洲欧美一区二区三区| 成年人视频免费| 久久久久免费av| 在线观看中文字幕不卡| 97精品国产97久久久久久粉红| 国产精品嫩草影院精东| 伊人激情综合| 色悠悠国产精品| 国产一精品一aⅴ一免费| 成人性生交大片免费网站 | 国产清纯白嫩初高中在线观看性色| 黄色在线观看视频网站| 国产午夜亚洲精品不卡| 亚洲在线免费看| 69成人免费视频| 小说区亚洲自拍另类图片专区| 亚洲福利在线观看| 欧美黄色性生活| 97人澡人人添人人爽欧美| 国产天堂亚洲国产碰碰| 亚洲综合视频1区| 无码人妻丰满熟妇奶水区码| 欧美国产日本| www.色综合| 欧美做受喷浆在线观看| 国产麻豆一区二区三区| 欧美视频精品一区| 欧美一级中文字幕| 在线视频91p| 99久久精品99国产精品 | 麻豆一二三区精品蜜桃| 欧美自拍丝袜亚洲| 波多野结衣综合网| 亚洲区欧洲区| 亚洲视频你懂的| 日本一区视频在线播放| 日韩在线视频观看免费| 国产一区二区不卡| 国产精品久久久久久久久男| 午夜精品久久久久久久久久久久久蜜桃| 偷拍欧美精品| 最近2019中文字幕mv免费看 | 另类小说综合欧美亚洲| 国产69精品久久久久久| 国产一国产二国产三| 一本到12不卡视频在线dvd| 神马国产精品影院av| 亚洲av成人无码久久精品| 神马午夜久久| 日韩av一区二区在线观看| www.四虎精品| 大奶在线精品| 日韩精品中文字幕一区| 亚洲精品在线网址| 亚洲成a人片777777久久| 欧美专区在线观看一区| 又色又爽又高潮免费视频国产| 国产理论在线| 大伊人狠狠躁夜夜躁av一区| 国产69精品久久久久久久| av资源在线播放| 午夜精品国产更新| 国产青青在线视频| 日本欧美日韩| 欧美午夜精品久久久久久孕妇| 久久精品一区二| 桃花岛tv亚洲品质| 在线视频国产一区| 国产视频1区2区3区| 亚洲欧洲二区| 日韩亚洲欧美在线| 麻豆免费在线观看视频| 久久久久毛片免费观看| 欧美成人精品福利| 一级做a爰片毛片| 国产精品极品在线观看| 亚洲精品网站在线播放gif| 公侵犯人妻一区二区三区| 亚洲丁香日韩| 久久久成人的性感天堂| 久久久久久久久99| 国内激情久久| 日本一区二区三区在线播放| 中文字幕乱码人妻二区三区| 蜜桃精品视频在线| 91久久国产自产拍夜夜嗨| 国产91免费在线观看| 91麻豆文化传媒在线观看| 日韩亚洲视频| 亚洲成年人在线观看| 免费成人黄色| 亚洲国产精品久久一线不卡| 少妇高潮喷水在线观看| 中文字幕av一区二区三区佐山爱| 欧美性大战久久久久久久蜜臀| 日韩在线一区视频| 国产精品一线| 一道本无吗dⅴd在线播放一区 | 精品亚洲自拍| 国产午夜一区二区| 男人与禽猛交狂配| 在线精品在线| 国产精品久久久久久久app| 国产精品久久久久久69| 成人福利视频网站| 亚洲精品国产精品国自产| 18+激情视频在线| 欧美日韩国产精品专区 | 狠狠色丁香久久婷婷综合丁香| 国产精品中出一区二区三区| freemovies性欧美| 亚洲综合视频网| mm131国产精品| 亚洲成aⅴ人片久久青草影院| x99av成人免费| 国产成人精品一区二三区| 久久国产成人午夜av影院| 久久99九九| 国产精品刘玥久久一区| 色综合一区二区| 午夜免费福利影院| 成人免费看片39| 91精品国产九九九久久久亚洲| 97久久人国产精品婷婷| 久久九九久久九九| 激情伊人五月天| 麻豆精品国产| 日韩最新在线视频| 久久亚洲精品国产| 国产成人午夜99999| 亚洲激情一区二区三区| 亚洲欧美小说色综合小说一区| 欧美一区二区三区小说| 波多野结衣家庭教师在线观看| 久久国产88| 国产精品夜夜夜一区二区三区尤| 18视频在线观看| 欧美另类videos死尸| 中文字幕网站在线观看| 国产亚洲在线观看| 韩国成人av| 91九色国产在线播放| 欧美日韩成人一区二区| 特级西西www444人体聚色| 亚洲乱码视频| 翡翠波斯猫1977年美国| 色呦呦视频在线观看| 欧美一级理论片| 国产喷水在线观看| 韩国视频一区二区| av不卡在线免费观看| 日本久久久久| www.午夜精品| 99久久一区二区| 一区二区三区中文字幕在线观看| 天天干天天色天天干| 国产精品99久久精品| 成人精品aaaa网站| av免费在线免费观看| 日韩欧美国产一区二区在线播放| 日本黄色小说视频| 国产成人精品亚洲777人妖| 9191国产视频| 粉嫩一区二区三区四区公司1| 久久久爽爽爽美女图片| 人成网站在线观看| 狠狠躁夜夜躁人人躁婷婷91| 国产精品无码无卡无需播放器| 精品亚洲国内自在自线福利| 久久艹国产精品| 欧美一级精品片在线看| 9a蜜桃久久久久久免费| 国产成人免费9x9x人网站视频| 久久精品美女视频网站| 无码精品人妻一区二区三区影院 | 欧美另类高清videos| 黄色一级大片在线免费看国产一| 日本电影亚洲天堂一区| 国产精品久久久精品四季影院| av激情综合网| 中文字幕第38页| 国产婷婷精品| 中文字幕一区二区三区有限公司| 美国十次av导航亚洲入口| 国产精品香蕉av| 在线观看v片| 欧美精品在线第一页| 精品三级久久久久久久电影聊斋| 欧美一区二区精品| 九九热最新视频| 亚洲高清视频中文字幕| 任我爽在线视频| 91老师国产黑色丝袜在线| 无套内谢丰满少妇中文字幕 | 日韩免费观看网站| 日本片在线观看| www.久久久久久.com| 你懂的免费在线观看视频网站| 欧美一区二区在线视频| 日韩一级片中文字幕| 亚洲国产精品久久人人爱蜜臀| 欧美性生交大片| 久久久无码精品亚洲日韩按摩| 中文字幕第六页| 毛片不卡一区二区| 白嫩少妇丰满一区二区| 亚洲激情网址| 中文字幕人妻熟女人妻洋洋| 97色伦图片97综合影院| 欧美精品二区三区四区免费看视频 | 97精品一区| 亚洲欧美日韩精品综合在线观看| 婷婷综合电影| 久久精品美女| 久久成人福利| 国产伦精品一区二区三区免| 亚洲性视频在线| 91日韩久久| 日韩在线成人| 91在线视频一区| 色综合视频一区二区三区日韩| 国产精品三级网站| 视频精品导航| 国产精品揄拍500视频| 欧洲精品一区二区三区| 国产不卡一区二区在线播放| 欧美电影网站| 日本91av在线播放| 日韩av中字| 国产99在线|中文| 日本肉肉一区| 国产精品一区二区3区| 91福利精品在线观看| 国产精品久久久久av免费| 欧美暴力调教| 国产女同一区二区| 欧美黄页免费| 99久久综合狠狠综合久久止| 91麻豆精品激情在线观看最新| 国产精品毛片va一区二区三区| 久久久免费毛片| 久久精品午夜一区二区福利| 九色精品国产蝌蚪| 日韩精品伦理第一区| 日韩在线理论| 精品视频在线观看一区二区| 精品99视频| 亚洲熟女乱色一区二区三区| 麻豆九一精品爱看视频在线观看免费| 久草精品在线播放| 麻豆精品久久精品色综合| www.成人黄色| 丁香一区二区三区| 丰满少妇一区二区三区| 中文字幕欧美激情| 男人的天堂久久久| 亚洲成精国产精品女| 丰满少妇xoxoxo视频| 精品视频一区二区三区免费| 性做久久久久久久久久| 日韩黄在线观看| 97超碰人人在线| 欧美激情第6页| 欧美7777| 亚洲一区二区日本| 亚洲aa在线| 爱爱爱视频网站| 国产欧美一区二区三区国产幕精品| 国产1区2区在线| 韩国成人福利片在线播放| www.88av| 最新国产の精品合集bt伙计| 日本亚洲色大成网站www久久| 在线观看亚洲专区| 亚洲国产999| 在线免费观看羞羞视频一区二区| 香蕉成人app免费看片| 国产成人精品999| 香蕉大人久久国产成人av| 日韩精品伦理第一区| 亚洲成人中文| 午夜激情视频网| 久久日韩精品一区二区五区| 登山的目的在线| 日韩欧美精品在线观看| 国内精品偷拍视频| 一区二区三区 在线观看视| 日本色护士高潮视频在线观看| 国产精品偷伦视频免费观看国产 | 国产婷婷成人久久av免费高清 | 五月激情丁香一区二区三区| 一本色道久久综合熟妇| 日韩精品视频在线免费观看 | 一区二区三区欧美日| 91porny九色| 亚洲精品v欧美精品v日韩精品| 黄页视频在线播放| 国产精品久久久91| 日韩美脚连裤袜丝袜在线| 欧美少妇一区二区三区| 日韩va欧美va亚洲va久久| 成人免费无码大片a毛片| 亚洲欧美日韩久久精品| 中国精品一区二区| 亚洲女人被黑人巨大进入al| 国产精品蜜臀| 97免费资源站| 一区二区三区在线| 99sesese| 国产精品二三区| wwwwww在线观看| 亚洲人成毛片在线播放| 女人让男人操自己视频在线观看 | 欧美在线亚洲| 97超碰人人爽| 国产精品免费人成网站| 国产免费a视频| 亚洲一区二区黄| 在线成人视屏| 亚洲激情电影在线| 久久国产精品无码网站| 午夜国产福利视频| 欧美日韩卡一卡二| 三区四区电影在线观看| 国产精品男人的天堂| 日本女优一区| wwwwwxxxx日本| 自拍视频在线观看一区二区| 国产一区二区三区四区视频 | 亚洲国产一区在线| 六月丁香综合在线视频| 老司机成人免费视频| 欧美一区在线视频| 99在线视频观看| 波多野结衣成人在线| 伊人成年综合电影网| 国产成人无码一区二区在线观看| 欧美性生交大片免网| 国产一区电影| 国产欧美精品xxxx另类| 国产大片一区| 国产高潮失禁喷水爽到抽搐| 亚洲午夜电影在线| 亚洲 欧美 激情 另类| 热久久视久久精品18亚洲精品| 欧美色婷婷久久99精品红桃| 国产又猛又黄的视频| 成人欧美一区二区三区小说| 国产精品国产av| 久久久久久香蕉网| 国产99精品| 91精品999| 亚洲成人在线免费| 欧美偷拍视频| 国产日韩在线免费| 欧美日韩国产亚洲一区| 在线免费观看a级片| 日本精品视频一区二区三区| 欧美被日视频| 国产另类第一区| 日韩精品欧美精品| 黄色录像二级片| 亚洲国产黄色片| 巨胸喷奶水www久久久| 天堂а√在线中文在线| 91在线免费视频观看| 亚洲综合精品国产一区二区三区 | 九九精品免费视频| 综合网中文字幕| 99香蕉久久| www.99在线| 亚洲影视资源网| 国产三级视频在线看| 97超级碰碰| 日韩在线播放一区二区| 欧美激情一区二区视频| 亚洲色图18p| 成人在线精品| 国产精品免费观看久久| 亚洲美腿欧美偷拍| 国产美女视频一区二区三区| 成人在线视频电影| 男女视频一区二区| 日本少妇激情舌吻| 久久精品视频播放| 黄色不卡一区| 欧美日韩人妻精品一区在线| 欧美狂野另类xxxxoooo| 中文字幕人成乱码在线观看|