【翻译】Jquery 1.7 发布
原文:http://blog.jquery.com/2011/11/03/jquery-1-7-released/
?
jQuery 1.7已經(jīng)可以下載!您可以從jQuery CDN獲取代碼:
http://code.jquery.com/jquery-1.7.js
http://code.jquery.com/jquery-1.7.min.js
這個(gè)新版本在谷歌和微軟的CDN也將在一兩天后可用。
感謝你們在試用期的測試和錯(cuò)誤報(bào)告,我們相信現(xiàn)在我們已經(jīng)有了一個(gè)穩(wěn)定的版本。如果您發(fā)現(xiàn)問題,提交bug并確保您選擇的是jQuery 1.7版本。同時(shí)請務(wù)必提供jsFiddle的測試案例以幫助我們快速的分析問題。
?
JQUERY 1.7的新特性
使用API網(wǎng)站提供的版本1.7 tag可以快速的查看這個(gè)版本中的新特性。這里逐條介紹1.7中的一些重要更新,以及在API文檔中沒有提到的內(nèi)容。
?
新事件 API: .on() 和 .off()
新的 .on() 和 .off() API 統(tǒng)一了jQuery中所有對文檔綁定事件的操作——而且它們也更加簡短!
$(elements).on( events [, selector] [, data] , handler );$(elements).off( [ events ] [, selector] [, handler] );
當(dāng)提供一個(gè)selector參數(shù)時(shí), .on() 根據(jù)選擇器過濾,并綁定一個(gè)委派的事件處理程序,類似于 .delegate() 。當(dāng)這個(gè)參數(shù)被忽略或?yàn)閚ull時(shí)則類似于 .bind() 。其中有一個(gè)模棱兩可的情況:當(dāng)data參數(shù)是一個(gè)字符串時(shí),你必須提供一個(gè)selector字符串或null,使data參數(shù)不被誤認(rèn)為selector參數(shù)。傳遞一個(gè)對象給data參數(shù),你可以不用再擔(dān)心這一特殊情況。
1.7所有現(xiàn)有的事件綁定方法(及其相應(yīng)的解除綁定的方法)仍然存在,但我們推薦您在使用1.7或更高版本的時(shí)候使用 .on() 。以下是在新舊API調(diào)用之間對應(yīng)的例子。
$('a').bind('click', myHandler);$('a').on('click', myHandler);
$('form').bind('submit', { val: 42 }, fn);
$('form').on('submit', { val: 42 }, fn);
$(window).unbind('scroll.myPlugin');
$(window).off('scroll.myPlugin');
$('.comment').delegate('a.add', 'click', addNew);
$('.comment').on('click', 'a.add', addNew);
$('.dialog').undelegate('a', 'click.myDlg');
$('.dialog').off('click.myDlg', 'a');
$('a').live('click', fn);
$(document).on('click', 'a', fn);
$('a').die('click');
$(document).off('click', 'a');
?
委托事件的性能改進(jìn)
事件委托隨著頁面大小和復(fù)雜度的不斷增長而變得越來越重要。類似Backbone和Sproutcore一樣的應(yīng)用框架大量的使用了事件委托。考慮到這一點(diǎn),jQuery 1.7的事件處理被重構(gòu)以使委派事件更加迅速,尤其是在大多數(shù)常見情況下。
為了優(yōu)化最常用的選擇器形式的代碼,我們研究了Google Codesearch上的代碼截面。近三分之二在 .live() 和 .delegate() 方法調(diào)用中使用的選擇器,至少使用了tag,id,class中的一個(gè)形成tag#id.class的形式。通過分析在JavaScript中這些簡單選擇器在事件綁定時(shí)的狀態(tài),我們在事件傳遞時(shí)甚至可以超越瀏覽器原生實(shí)現(xiàn)matchesSelector的性能。對于更復(fù)雜的選擇器,我們?nèi)匀皇褂肧izzle引擎,所以現(xiàn)有的代碼仍然可以繼續(xù)運(yùn)行。
最終委托事件和1.6.4相比,節(jié)省了大約一半的時(shí)間:
?
更好的支持IE6/7/8中的HTML5
任何試圖在IE 6/7/8中使用新的類似于<section>的HTML5標(biāo)簽的人,毫無疑問都會遇到IE 6/7/8無法解析這些標(biāo)簽,甚至將這些標(biāo)簽從文檔中移除的問題。在jQuery 1.7中,我們?yōu)檩^舊IE版本中 .html() 一類的方法建立了對HTML5的支持。這一功能和以前的innerShiv相同。您仍然需要在您的文檔頭部加入HTML5Shiv以使舊IE版本支持HTML5標(biāo)簽。需要更多背景資料,請查看The Story of the HTML5 Shiv。
?
切換動畫更直觀
在jQuery的舊版本中,類似于 .slideToggle() 或 .fadeToggle() 的切換動畫在互相堆放和前一個(gè)動畫被 .stop() 終止時(shí)無法正常工作。在1.7中這一情況被修復(fù),動畫系統(tǒng)會記住元素的初始值并在一個(gè)切換的動畫被提前終止的情況下重置它們。
?
異步模塊定義(AMD)
現(xiàn)在jQuery支持AMD API。請注意jQuery 1.7并不是腳本裝載器本身;它是和RequireJS 或curl.js等AMD兼容的裝載器合作以使它可以動態(tài)加載并使用裝載器控制ready事件。現(xiàn)在一個(gè)AMD兼容的裝載器可以從谷歌或微軟的CDN加載一個(gè)jQuery 1.7的未經(jīng)修改的版本。非常感謝James Burke (@jrburke) 提交的補(bǔ)丁和單元測試,然后耐心的等待我們納入此功能。
?
jQuery.Deferred
jQuery.Deferred對象已經(jīng)擴(kuò)大到新的進(jìn)度處理程序以及調(diào)用這些處理程序的通知方法。這允許您異步的通知偵聽器一個(gè)未解決請求的進(jìn)度或拒絕請求。此外,有一個(gè)新的 state() 方法返回當(dāng)前Deferred的狀態(tài),它主要用于調(diào)試。
Deferreds現(xiàn)在使用新的jQuery.Callbacks特性,一種一系列的的處理程序的排隊(duì)和調(diào)用的通用方法。插件開發(fā)者可能會對這一特性感興趣,雖然Deferreds和事件子系統(tǒng)為這一類型的功能提供一個(gè)更高層次的接口。
?
jQuery.isNumeric()
在jQuery中我們已經(jīng)發(fā)現(xiàn)了幾種我們需要知道一個(gè)參數(shù)是數(shù)值或可以被成功的轉(zhuǎn)換為數(shù)值的情況。我們決定開發(fā)并公開jQuery.isNumeric()因?yàn)樗且粋€(gè)有用的工具。為它傳遞一個(gè)任意類型的參數(shù),它將對應(yīng)的返回true或false。
?
刪除的功能
?
event.layerX 和 event.layerY:我們在1.7版本刪除了這些不規(guī)范的屬性。雖然我們通常會對這些過時(shí)的屬性留有通知期,但Chrome 16對此屬性在控制臺生成警告消息。因此,我們決定立即將其刪除。在仍然支持這些屬性的平臺上,可以使用event.originalEvent.layerX和event.originalEvent.layerY.
?
jQuery.isNaN():這一未公開的實(shí)用函數(shù)已被刪除,因?yàn)樗终剂艘粋€(gè)內(nèi)置的JavaScript函數(shù)名稱但并不具有相同的語義,導(dǎo)致混亂。新的jQuery.isNumeric()提供了類似的功能,但可以被更好的支持。盡管jQuery.isNaN()并未公開, Github上的一些項(xiàng)目仍然在使用它。我們已經(jīng)和他們聯(lián)系,要求他們使用jQuery.isNumeric()或一些其他的解決方案。
?
jQuery.event.proxy():這一未公開和過時(shí)的方法已被刪除。用戶應(yīng)該使用公開的jQuery.proxy方法以代替。
posted on 2011-11-05 00:34?巴里切羅 閱讀(...) 評論(...) 編輯 收藏轉(zhuǎn)載于:https://www.cnblogs.com/barrichello/archive/2011/11/05/2236774.html
總結(jié)
以上是生活随笔為你收集整理的【翻译】Jquery 1.7 发布的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Commons codec jar包详解
- 下一篇: 51与PC通信协议设计及实现(三):51