為慶祝jQuery的四周年生日, jQuery官方團隊正式發表了jQuery 1.4版本。在這個版本中,jQuery官方團隊做了大量的編碼、測試和文件工作,相對之前版本自然改進不少,讓我們一起來看看有那些新變化吧。
本文分上下兩篇,上篇主要總體介紹jQuery 1.4版本的相關使用及更新,下篇透過一些程式碼範例來展示更新的方法及新添加的方法。
【下載及呼叫】
像以往一樣,官方提供了jQuery的兩份拷貝,一份是壓縮版本(使用Google Closure Compiler壓縮,之前使用的是YUI),另一份是未壓縮版本(用來調試和閱讀)。
之前曾提議透過google伺服器載入jQuery,提高載入速度。現在,我們仍然可以透過Google的伺服器呼叫壓縮後的jQuery 1.4版本文件,如下:
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js" type="text/javascript"><!--mce:0--></script >
【新特性及變化】
在jQuery 1.4中,許多常用的jQuery方法被重寫,這些改進不僅更易用,也帶來了效能的顯著提升。
註:以下為概述,不詳之處請參閱下篇的程式碼解釋。
1.為一些方法添加設定函數(Setter Functions)
在先前版本中,我們可以給attr()方法傳入一個函數,將函數的回傳值賦予某個屬性。 1.4中,這個功能被加入了更多的方法:.css()、 .attr()、 .val()、 .html()、 .text()、 .append()、.prepend()、 . before()、 .after()、.replaceWith(), .wrap()、 .wrapInner()、 .offset()、 .addClass()、 .removeClass()、 .toggleClass()。
此外,在下面方法中,也可以傳入目前值作為設定函數的第二個參數,以供設定函數使用:.css()、.attr()、.val()、.html()、.text( )、.append()、.prepend()、.offset()、.addClass()、.removeClass()、和.toggleClass()。例如:
jQuery('<img src="enter.png" alt="enter your name" />')
.attr("alt", function(index, value) {
return "Please, " + value;
});
2、更新了jQuery中序列化的核心方法jQuery.param()
先前對於{foo: ["bar", "baz"]}序列化後的結果是“foo=bar&foo=baz”,現在為“foo[]=bar&foo[]=baz”。
這樣更改的目的主要是告訴接收端,傳入的是陣列物件。
3.在jQuery.ajax中可在不指定dataType屬性時,會根據response的content-type自動辨識。
例如:ajax請求傳回的物件是json類型(application/json),則dataType會自動指定為」json」(不指定的情況)。
4、在jQuery.ajax請求中,加入對Etag的支援。
之前jQuery在ajax請求中是在header中不發送If-None-Match值的(也就是不支援Etag),也就預設忽略了瀏覽器快取。現在可以透過指定ifModified屬性開啟它。
提示:如果您不了解http header的相關知識,推薦閱讀這篇文章。