Home » jQuery 資源

jQuery 1.7


jQuery 官方在上星期(2011/11/03)發佈了 1.7 版。從 JQUERY 1.7 CHANGE LOG 中可以看到此次改版主要是針對 Event 的部份來做修正及最佳化。

jQuery 1.7 下載位置
正常版本:http://code.jquery.com/jquery-1.7.js
壓縮版本:http://code.jquery.com/jquery-1.7.min.js

GoogleMicrosoft 一樣都有提供了 CDN 服務:
Googlehttps://ajax.googleapis.com/ajax/libs/jquery/1.7.0/jquery.min.js
Microsofthttp://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.min.js

以下幾點是 1.7 版的新特性及功能:

1.新的事件 APIs.on().off()。用來統一在 jQuery 中綁定事件的 .one().bind().unbind().live().die().delegate().undelegate() 等方法的用法:

檢視原始碼 JavaScript
1
2
$(elements).on( events [, selector] [, data] , handler );
$(elements).off( [ events ] [, selector] [, handler] );

其實可以直接把它當做是 .bind().unbind() 的加強版,讓參數的傳遞有一致性。當有提供 selector 時,就會等同於使用 .delegate().undelegate();否則就是一般的 .bind().unbind() 的用法。
雖然當使用 .bind() 等方法時會自動轉換成呼叫 .on() 或是 .off(),但畢竟是再經過一次轉換,所以若確定您使用的版本是在 1.7(含以上)的話,建議都直接改用 .on().off()

2.提升事件委派的效能
在一些複雜的網頁元素中綁定事件時,事件委派的效能會比一一去綁定來的有效率及快速。再加上約有 2/3 的事件委派都只是用到 tag#id 或是 .class 等簡單的選擇器,因此在新版中會優先使用瀏覽器原生的 .matchesSelector() 來實現。如果是複雜的選擇器的話,一樣是使用 Sizzle 引擎來讓整個委派的動作能正常執行。

從圖中可以看到在 IE 各版本中都提升了近一倍的速度:

3.在 IE6/7/8 中對 HTML5 有更好的支援:
因為舊版 IE 瀏覽器不認得 HTML5 新的標籤,所以當使用 .html() 等方式來加入 HTML5 元素時就會發生錯誤。所以在新版中就引用了 http://jdbartlett.com/innershiv/ 來支援它,但網頁還是得引用 html5shiv 或是 modernizr 來讓舊版 IE 能支援新的 HTML5 標籤。

4.修正使用 Toggle 在進行動畫時無法儲存初始值及使用 .stop() 後無法重設初始值等問題。

各位可在 1.7 版及舊版 jQuery 中測試結果:

檢視原始碼 JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<style type="text/css">
	.toggle {
		width: 100px;
		height: 100px;
		border: 1px solid red;
	}
</style>
<script type="text/javascript">
	$(function(){
		$('.toggle').hover(function(){
			$(this).stop().slideToggle();
		}, function(){
			$(this).stop().slideToggle();
		});
	});
</script>
 
<div class="toggle"></div>

5.支援 Asynchronous Module Definition(AMD) 規範。

6.jQuery.Deferred 除了提供新的進度處理及通知方法之外,同時也新增一個可用來取得目前 Deferred 狀態的 state() 方法。Deferred 也透過 jQuery.Callbacks 機制來提供外掛開發者一個統一的事件處理方式。

7.新增 jQuery.isNumeric() 用來判斷是否為數字或可轉換成數字。

8.移除了一些將被棄用的屬性及非公開的方法。
因為在像 Chrome 中會一直丟出 event.layerXevent.layerY 已在 WebKit 中快被棄用的警告,所以在新版中就把這兩個屬性移除掉了。但還是可以透過 event.originalEvent.layerXevent.originalEvent.layerY 來取得。

jQuery.isNaN() 請改用新的 jQuery.isNumeric()

jQuery.event.proxy() 請改用 jQuery.proxy()

其它的修正都可以在 JQUERY 1.7 CHANGE LOG 中看到完整的說明,同時可以在 New or Changed in 1.7 中看到在 1.7 版中新增或是擴充的函式。

如果你在使用 1.7 版時有發現錯誤或是詭異的問題時,請馬上登入到 Bug Tracker 回報問題,並註明是在 1.7 中發生的。

5 筆針對 jQuery 1.7 的迴響

  1. 通告: jQuery 1.7 發佈 :: WP 教學網

發表迴響