日本好好热aⅴ|国产99视频精品免费观看|日本成人aV在线|久热香蕉国产在线

  • <cite id="ikgdy"><table id="ikgdy"></table></cite>
    1. 西西軟件園多重安全檢測下載網(wǎng)站、值得信賴的軟件下載站!
      軟件
      軟件
      文章
      搜索

      首頁編程開發(fā)Delphi → jQuery 1.5 beta1的內(nèi)容改進(jìn)細(xì)節(jié)分析

      jQuery 1.5 beta1的內(nèi)容改進(jìn)細(xì)節(jié)分析

      相關(guān)軟件相關(guān)文章發(fā)表評論 來源:本站整理時(shí)間:2011/1/18 21:06:52字體大。A-A+

      作者:佚名點(diǎn)擊:35次評論:0次標(biāo)簽: jQuery

      • 類型:編程輔助大。109KB語言:中文 評分:5.0
      • 標(biāo)簽:
      立即下載

       jQuery 1.5 beta1出來了,從學(xué)習(xí)跟進(jìn)上來說,這一次已經(jīng)比較晚了(我竟然不知道1.5什么時(shí)候出的alpha,就這么beta了)。

      這個(gè)1.5版本最大的更新是AJAX的完全重寫,提供了更強(qiáng)的可擴(kuò)展性。但是受制于精力和篇幅,對新的AJAX的分析還是放到下回,本篇先簡單介紹一下細(xì)節(jié)方面的改進(jìn)。

      jQuery._Deferred和jQuery.Deferred
      首先不得不說這兩個(gè)新生事物,因?yàn)樗麄兪亲鳛榛A(chǔ)設(shè)施存在,不把這兩個(gè)東西講明白了,有些問題根本沒辦法解釋。

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

      jQuery 1.5 beta1:http://www.ksks6.com/soft/21283.html

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

      簡單來說,jQuery._Deferred是一個(gè)函數(shù)隊(duì)列,他的作用有以下幾點(diǎn):

      保存若干個(gè)函數(shù)。
      在特定的時(shí)刻把保存著的函數(shù)全部執(zhí)行掉。
      執(zhí)行過后,新進(jìn)來的函數(shù)會(huì)立刻執(zhí)行。
      感覺是不是和啥東西很像?對,jQuery的ready函數(shù)就是這樣的邏輯,實(shí)際中jQuery 1.5中的ready函數(shù)也確實(shí)被嫁接到這上面去了。

      jQuery._Deferred提供下面的接口:

      done:function(fn1, fn2, ...)的形式,用于把函數(shù)添加到隊(duì)列中。
      fire:function(context, args)的形式,使用context指定this對象,args指定參數(shù),調(diào)用隊(duì)列中所有函數(shù)。fire被調(diào)用后,_Deferred會(huì)進(jìn)入isResolved狀態(tài),未來對done的調(diào)用不會(huì)再保存函數(shù),而是直接調(diào)用函數(shù)。
      resolve:相當(dāng)于調(diào)用fire(this, arguments),一個(gè)簡化的方法。
      isResolved:用來判斷_Deferred是否在isResolved狀態(tài),具體參考前面的fire函數(shù)的解釋。
      cancel:取消掉整個(gè)隊(duì)列,這樣不管未來是不是fire,隊(duì)列中的函數(shù)都不會(huì)再被調(diào)用。
      說明白了jQuery._Deferred,再來看看jQuery.Deferred。這個(gè)東西其實(shí)就是2個(gè)_Deferred組成的,第一個(gè)稱為deferred,用于保管“正!睜顟B(tài)下的函數(shù);第二個(gè)稱為failDeferred,用于保管“出錯(cuò)”狀態(tài)下的函數(shù)。同時(shí)jQuery.Deferred提供了一些新的接口:

      then:function(done, fail)的形式,把done添加進(jìn)deferred,把fail添加進(jìn)failedDeferred。
      fail:相當(dāng)于failDeferred的done函數(shù)。
      fireReject:相當(dāng)于failDeferred的fire函數(shù)。
      reject:相當(dāng)于failDeferred的resolve函數(shù)。
      isRejected:相當(dāng)于failDeferred的isResolved函數(shù)。
      同時(shí)jQuery.Deferred取消了cancel函數(shù)。

      那么這個(gè)是啥用的呢?有“正!焙汀俺鲥e(cuò)”2個(gè)狀態(tài),同時(shí)又是異步的,很容易就能想到……對,給AJAX用的,在下一篇分析中再詳細(xì)說明。

      jQuery.ready的變化
      因?yàn)橛辛薺Query._Deferred這個(gè)東西,jQuery.ready函數(shù)變成依賴于函數(shù)隊(duì)列,具體的變化有:

      原來的readyList變量已經(jīng)不再是一個(gè)數(shù)組,而變成了jQuery._Deferred對象。

      原本在DOMContentLoaded時(shí),調(diào)用readList中所有函數(shù)的邏輯,現(xiàn)在也使用了jQuery._Deferred中,原來的代碼:

      while ( (fn = ready[ i++ ]) ) {
      fn.call( document, jQuery );
      }變成了:

      readyList.fire( document , [ jQuery ] );jQuery.parseXML函數(shù)
      新增了靜態(tài)函數(shù)jQuery.parseXML,用于提供瀏覽器兼容的從字符串轉(zhuǎn)為XML文檔的功能。

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

      對于標(biāo)準(zhǔn)瀏覽器,使用DOMParser對象:

      var parser = new DOMParser();
      var xml = parser.parseFromString(text, 'text/html');對于IE,使用Microsoft.XMLDOM對象:

      var parser = new ActiveXObject('Microsoft.XMLDOM');
      parser.async = 'false';
      parser.loadXML(text);
      var xml = parser.documentElement;data部分
      添加了jQuery.hasData函數(shù),用于判斷一個(gè)元素是否有jQuery附加上去的數(shù)據(jù)。

      修改了jQuery.expando的實(shí)現(xiàn),在原來單純地取當(dāng)前時(shí)間的基礎(chǔ)上,添加了一個(gè)隨機(jī)數(shù):

      expando = "jQuery" + ( jQuery.fn.jquery + Math.random() ).replace( /\D/g, "" );這樣保證在同一時(shí)間,引入多個(gè)jQuery副本,這幾個(gè)副本之間的expando不會(huì)相互沖突,導(dǎo)致元素上的data變得錯(cuò)亂。一般來說,是不會(huì)引入多個(gè)jQuery副本的,但是使用SealJS等的時(shí)候,配置不當(dāng)?shù)脑,也是很容易出現(xiàn)此類問題的。

      DOM操作部分
      原本的hasClass、addClass、removeClass函數(shù)都需要將元素的class屬性分隔為數(shù)組,在1.4.4版本中,通過\n或\t進(jìn)行分隔,在1.5中增加了一個(gè)\r,用于對應(yīng)Windows平臺(tái)下的換行符(\r\n)。

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

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

      對于IE下使用cloneNode復(fù)制節(jié)點(diǎn),會(huì)將事件也一起復(fù)制過來的問題,1.4.4中是采取復(fù)制innerHTML的方式給予解決,而在1.5中則采納了mootools團(tuán)隊(duì)提供的方法,使用cloneFixAttribute函數(shù)修正該問題。

      cloneFixAttribute函數(shù)們于jQuery 1.5 beta1源碼文件的5388-5438行,處理IE的BUG的原理很簡單,當(dāng)然前端里一些看似簡單的東西,都是很難發(fā)現(xiàn)的:

      IE中有個(gè)叫clearAttributes的函數(shù),會(huì)清除到節(jié)點(diǎn)上的所有屬性,順便把和事件相關(guān)的onclick之類的屬性也去掉了。在復(fù)制出來的節(jié)點(diǎn)上調(diào)用這個(gè)函數(shù),就會(huì)把屬性清得干干凈凈。
      IE中還有一個(gè)叫mergeAttributes的函數(shù),把一個(gè)節(jié)點(diǎn)的屬性復(fù)制到另一個(gè)節(jié)點(diǎn)上,但他不會(huì)把和事件相關(guān)的屬性復(fù)制過去。所以再把原始節(jié)點(diǎn)調(diào)用mergeAttributes,把屬性重新放回復(fù)制出來的節(jié)點(diǎn)上,這就相當(dāng)于起到了去除事件相關(guān)屬性的作用。
      另外cloneFixAttribute函數(shù)還處理了非常多IE6-8在cloneNode上的兼容性問題,非常值得詳細(xì)研究。

      AJAX部分
      AJAX已經(jīng)完全重寫了,只留下一點(diǎn)邊邊角角保留著1.4.4版本的風(fēng)采,這里只抽取一部分進(jìn)行簡單的說明。

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

      $.each(['get', 'post'], function(i, method) {
      $[method] = function() { ... };
      });ajaxSetup函數(shù)現(xiàn)在加了一行return this;,可以鏈?zhǔn)秸{(diào)用了。

      serializeArray函數(shù)現(xiàn)在統(tǒng)一將value中的換行符替換成Windows的風(fēng)格(\r\n)。

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

      原本對于“請求成功”的瀏覽器狀態(tài)碼,除200-299以及304外,還有一個(gè)1223,來自于IE的一個(gè)BUG,會(huì)將204的狀態(tài)碼變成1223,F(xiàn)在因?yàn)橛辛薺XHR對象,相當(dāng)于中間多了一層,因此從jXHR對象獲取statusCode不會(huì)出現(xiàn)1223的情況,已經(jīng)被變回204了。

      jQuery.ajax函數(shù)的配置項(xiàng)中多了一個(gè)statusCode項(xiàng),其結(jié)構(gòu)為map,用于指定返回特定狀態(tài)碼時(shí)的回調(diào)函數(shù),大致形式如下:

      jQuery.ajax({
      url: 'xxx',
      statusCode: {
      200: function() { 處理請求成功 },
      404: function() { 處理頁面未找到 },
      503: function() { 處理Service Unavailable }
      }
      });再添加了這個(gè)回調(diào)后,jQuery.ajax函數(shù)已經(jīng)有非常多的回調(diào)函數(shù),其觸發(fā)過程如下:

      根據(jù)返回的狀態(tài)碼,觸發(fā)success或者error回調(diào)。
      根據(jù)狀態(tài)碼,觸發(fā)對應(yīng)的statusCode回調(diào)。
      觸發(fā)complete回調(diào)。
      觸發(fā)全局ajaxComplete回調(diào)。
      如果此時(shí)沒有正在執(zhí)行的AJAX,觸發(fā)全局ajaxStop回調(diào)。
      其他細(xì)節(jié)
      入口函數(shù)jQuery.fn.init現(xiàn)在多了一個(gè)參數(shù),值始終為rootjQuery,用于加速init函數(shù)中對rootjQuery變量的查找速度(減少了一層作用域):

      //jQuery 1.5 beta1 源碼23行
      jQuery = function( selector, context ) {
      // The jQuery object is actually just the init constructor 'enhanced'
      return new jQuery.fn.init( selector, context, rootjQuery );
      }jQuery對象支持繼承了,具體的修改是將幾處直接調(diào)用jQuery的代碼改為了對this.constructor的調(diào)用:

      202行:return this.constructor( context ).find( selector );
      253行:var ret = this.constructor();
      334行:return this.prevObject || this.constructor(null);同時(shí)還提供了jQuery.subclass函數(shù)用于創(chuàng)建一個(gè)繼承自jQuery的類型,由于不是很常用jQuery,更是從來沒有用到過需要繼承jQuery的情況,因此也不方便說這個(gè)功能的作用有多大。

        html編輯器
        (73)html編輯器
        我們做網(wǎng)頁的時(shí)候最難找的就是編輯器,網(wǎng)上找一個(gè)吧,要不是圖片上傳錯(cuò)誤,就是到處都是錯(cuò)誤,垃圾太多.大家都需要一個(gè)簡單,速度快的.西西為您提供最好用的編輯器一站式下載編輯器定義編輯器指的是一類編輯制作工具,可自定義窗囗,編輯主題索引,可選擇添搜索頁,無任何不自由。編輯器哪個(gè)好用小編個(gè)人比較喜歡使用和,這兩款編輯器軟件都有不錯(cuò)的表現(xiàn)。至于編輯器哪個(gè)好用,這就要根據(jù)你的個(gè)人需求去選擇對應(yīng)的編輯器啦...更多>>
        • UltraEdit-32中文版21.20.1001 中文

          06-29 / 19.5M

          推薦理由:ultraEdit 32 破解版 簡體中文 內(nèi)有安裝說明,完全免費(fèi),無試用期的。該軟件功能強(qiáng)大,能打開各種格式的文件
        • pyscripter x642.5.3 官方最新版

          11-10 / 4.7M

          推薦理由:python編輯器,代碼補(bǔ)全、參數(shù)提示補(bǔ)全工具,這個(gè)工具其實(shí)非常重要,可以大大提高開發(fā)效率,減少出錯(cuò)。很滿
        • 快手AAuto Studio10.152 綠色中文免

          02-20 / 8.5M

          推薦理由:快手aauto是由一鶴軟件耗時(shí)四年開發(fā)新一代編程語言。完美支持靜態(tài)類型、動(dòng)態(tài)類型,完美支持com、dllapi、re
        • ultraedit64位破解版v22.20.0.49 綠

          03-31 / 37.9M

          推薦理由:UltraEdit是最強(qiáng)大的一款超值文本編輯器!ultraedit64位破解版,適用于Windows64位系統(tǒng)使用,此版為綠色破解
        • Dreamweaver cs6中文版官方原版

          11-19 / 279.7M

          推薦理由:AdobeDreamweaverCS6是AdobeCreativeSuite6系列中的HTML編輯器和網(wǎng)頁設(shè)計(jì)軟件,是最優(yōu)秀的可視化網(wǎng)頁設(shè)計(jì)工
        • Adobe Dreamweaver CS5官方簡體中文

          05-15 / 436.8M

          推薦理由:Adobe Dreamweaver CS5 軟件使設(shè)計(jì)人員和開發(fā)人員能充滿自信地構(gòu)建基于標(biāo)準(zhǔn)的網(wǎng)站。由于同新的 Adobe CS Li
        dreamweaver cs6
        (14)dreamweaver cs6
        新版本使用了自適應(yīng)網(wǎng)格版面創(chuàng)建頁面,在發(fā)布前使用多屏幕預(yù)覽審閱設(shè)計(jì),可大大提高工作效率。改善的性能,更高效地傳輸大型文件。實(shí)時(shí)視圖和多屏幕預(yù)覽面板可呈現(xiàn)代碼,更能夠檢查自己的工作。曾經(jīng)風(fēng)靡一時(shí)的網(wǎng)頁三劍客成員之一是目前應(yīng)用最廣的網(wǎng)頁制作軟件,原本是由公司所開發(fā)的著名網(wǎng)站開發(fā)工具,隨被收購后,改名為。它是第一套針對專業(yè)網(wǎng)頁設(shè)計(jì)師特別發(fā)展的視覺化網(wǎng)頁開發(fā)工具,以及在之后推出的針對專業(yè)網(wǎng)頁圖像設(shè)計(jì)的,三者...更多>>
        • Dreamweaver cs6中文版官方原版

          11-19 / 279.7M

          推薦理由:AdobeDreamweaverCS6是AdobeCreativeSuite6系列中的HTML編輯器和網(wǎng)頁設(shè)計(jì)軟件,是最優(yōu)秀的可視化網(wǎng)頁設(shè)計(jì)工
        • Dreamweaver cc amtlib.dll補(bǔ)丁

          07-05 / 834KB

          推薦理由:Adobe Dreamweaver CC 13.0 build 6390多語言正式版的破解補(bǔ)丁,破解后程序不再提示剩余天數(shù)與激活注冊。關(guān)
        • Dreamweaver CS5 HTML 5 擴(kuò)展包

          06-22 / 5.7M

          推薦理由:安裝了該擴(kuò)展后再也不用擔(dān)心不記得難記的css3樣式代碼了! 剛裝 Dreamweaver CS5 的時(shí)候,發(fā)現(xiàn)新建文檔的時(shí)
        • Dreamweaver插件包西西整理

          01-08 / 2.7M

          推薦理由:西西小編整理的一些比較常用的Dreamweaver插件,希望能對大家有所幫助!persistent_layers 不管滾動(dòng)條如何拉
        • Adobe Dreamweaver CS4中文精簡版

          04-11 / 84.5M

          推薦理由:使用業(yè)界領(lǐng)先的Web 創(chuàng)作工具之一構(gòu)建世界級的網(wǎng)站和應(yīng)用程序。Adobe® Dreamweaver® CS4 軟件是 W
        • Dreamweaver jQuery智能提示插件1.

          07-31 / 109KB

          推薦理由:1.2.0版本插件在1.0.0插件基礎(chǔ)上進(jìn)一步修改,版權(quán)信息僅保留致謝信息,刪除作者為了代碼整體提示美觀度,故

        相關(guān)評論

        閱讀本文后您有什么感想? 已有人給出評價(jià)!

        • 8 喜歡喜歡
        • 3 頂
        • 1 難過難過
        • 5 囧
        • 3 圍觀圍觀
        • 2 無聊無聊

        熱門評論

        最新評論

        發(fā)表評論 查看所有評論(0)

        昵稱:
        表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
        字?jǐn)?shù): 0/500 (您的評論需要經(jīng)過審核才能顯示)