『壹』 jquery 怎麼用
使用步驟如下:
1.jQuery給放到一個文件夾裡面,方便我們待會引用這個jQuery,這里我就放到我項目的js文件夾裡面。
2.然後我們來開始編輯HTML界面代碼。
3.使用script標簽把jQuery引入到我們的HTML界面。src引號裡面的就是我們的jQuery路徑名稱。
4.接著再書寫一個script標簽對,裡面寫上jQuery入口函數,這樣,當我們的HTML載入完成之後就會執行我們的jQuery代碼
『貳』 jquery-1.4.2.min.js文件有什麼用途裡面的代碼都有什麼用途
jquery-1.4.2.min.js為JQuery庫,版本號為1.4.2,min表明該版本為壓縮版,去除了空白字元及注釋,並對代碼進行了變數、函數名壓縮優化等,適合用於生產環境。
JQuery是繼prototype之後又一個優秀的javascript庫。它是輕量級的js庫,它兼容CSS3,還兼容各種瀏覽器(IE6.0+,FF1.5+,Safari2.0+,Opera9.0+),jQuery2.0及後續版本將不再支持IE6/7/8瀏覽器。jQuery使用戶能更方便地處理HTML(標准通用標記語言下的一個應用)、events、實現動畫效果,並且方便地為網站提供AJAX交互。jQuery還有一個比較大的優勢是,它的文檔說明很全,而且各種應用也說得很詳細,同時還有許多成熟的插件可供選擇。jQuery是一個兼容多瀏覽器的javascript庫,核心理念是writeless,domore(寫得更少,做得更多)。
JQuery的作用:
主要用於兼容個瀏覽器的JavaScript用法,只需要使用jQuery中指定的方法即可實現在各主流瀏覽器中同時兼容,能夠讓開發人員關注業務的開發而不必關心JavaScript的兼容性問題。
常見的幾類如下:
選擇器:用於選取特定的一個或多個dom節點
屬性/CSS:用於改變dom的屬性值及一些JavaScript控制的樣式
dom操作:如對dom節點的增刪查改
遍歷:對dom樹、數組、其他可遍歷的類型進行遍歷操作
事件:兼容各瀏覽器的事件調用,及自定義的事件等
效果:如JavaScript動畫等
Ajax:統一各瀏覽器的Ajax請求的用法
JQuery提供了上百個函數,提高了開發的效率,方便開發者在不同瀏覽器下使用相同的一套代碼實現指定業務功能。
『叄』 如何編寫jquery 插件 函數A調用函數B
編寫插件的目的是給已經有的一系列方法或函數做一個封裝,以便在其他地方重復使用,提高開發效率和方便後期維護。
在編寫jQuery插件的時候,我們一般會遵循一些約定:
jQuery插件推薦命名為:jquery.插件名.js。
所有對象方法都應當附加到jQuery.fn對象上,而所有的全局函數都應當附加到jQuery對象本身上。
在插件內部,this指向的是當前通過選擇器獲取的jQuery對象;而一般的方法如click()方法,內部的this指向的是DOM元素。
所有的方法或函數插件,都應當以分號結尾,否則壓縮的時候可能出現問題,甚至可以在插件頭部先加上一個分號,以免他人的不規范代碼給插件帶來影響。
插件應該返回一個jQuery對象,以保證插件的可鏈式操作。除非插件需要返回的是一些需要獲取的量,例如字元串或者數組等。
為了避免沖突,避免在插件內部使用作為jQuery對象的別名,而應使用完整的jQuery來表示。當然,也可以利用閉包技術來迴避這個問題,使插件內部繼續使用作為jQuery的別名。
閉包:當內部函數在包含它們的外部函數之外被調用的時候,就會形成閉包,即內部函數會在外部函數返回後執行。
function a(){
var i = 0;
function b(){
alert(++i);
}
return b;
}
var c = a();
c();
以上代碼中,當函數a的內部函數b被函數a外的一個變數c引用的時候,就創建了一個我們通常所謂的「閉包」。
另外,還可以通過匿名函數創建閉包(一個函數是不是匿名函數和是不是閉包並沒有直接關系):
var JSON = JSON || {};
(
function(){
var f = function(n){
for(var i=0;i<n;i++){
alert(i);
}
};
JSON.f=f;
})();
JSON.f(1);
內部函數:函數定義和函數表達式位於另一個函數的函數體內,並且這些內部函數可以訪問它們所在的外部函數中聲明的所有局部變數、參數和聲明的其他內部函數。
閉包的作用:1、保護函數內的變數安全;2、在內存中維持一個變數(javascript垃圾回收機制)。
利用閉包的特性,我們可以在既避免內部臨時變數影響全局空間,又可以在插件內部使用$符號作為jQuery的別名。常見的jQuery插件都是以下這種形式:
(function(){
/*編寫代碼*/
})();
首先定義一個匿名函數function(){/*編寫代碼*/},然後用括弧括起來,最後通過()這個運算符來執行。可以傳遞參數進去,以供內部函數使用。
//為了更好的兼容性,開始前有個分號
;(function($){ //此處將$作為匿名函數的形參
/*編寫代碼,可以使用$作為jQuery的別名*/
})(jQuery); //將jQuery作為實參傳遞給匿名函數
『肆』 jquery 簡介
JQuery是繼prototype之後又一個優秀的Javascript庫。它是輕量級的js庫 ,它兼容CSS3,還兼容各種瀏覽器(IE 6.0+, FF1.5+, Safari 2.0+, Opera 9.0+),jQuery2.0及後續版本將不再支持IE6/7/8瀏覽器。jQuery使用戶能更方便地處理HTML(標准通用標記語言下的一個應用)、events、實現動畫效果,並且方便地為網站提供AJAX交互。jQuery還有一個比較大的優勢是,它的文檔說明很全,而且各種應用也說得很詳細,同時還有許多成熟的插件可供選擇。jQuery能夠使用戶的html頁面保持代碼和html內容分離,也就是說,不用再在html裡面插入一堆js來調用命令了,只需要定義id即可。
jQuery是一個兼容多瀏覽器的javascript庫,核心理念是write less,do more(寫得更少,做得更多)。jQuery在2006年1月由美國人John Resig在紐約的barcamp發布,吸引了來自世界各地的眾多JavaScript高手加入,由Dave Methvin率領團隊進行開發。如今,jQuery已經成為最流行的javascript庫,在世界前10000個訪問最多的網站中,有超過55%在使用jQuery。
jQuery是免費、開源的,使用MIT許可協議。jQuery的語法設計可以使開發更加便捷,例如操作文檔對象、選擇DOM元素、製作動畫效果、事件處理、使用Ajax以及其他功能。除此以外,jQuery提供API讓開發者編寫插件。其模塊化的使用方式使開發者可以很輕松的開發出功能強大的靜態或動態網頁。
jQuery,顧名思義,也就是JavaScript和查詢(Query),即是輔助JavaScript開發的庫。
歷史
大概在 1992 年,一家稱作 Nombas 的公司開發了一種叫做 C 減減(C-minus-minus,簡稱 Cmm)的嵌入式腳本語言。Cmm 背後的理念很簡單:一個足夠強大可以替代宏操作(macro)的腳本語言,同時保持與 C (和 C ++)足夠的相似性,以便開發人員能很快學會。這個腳本語言捆綁在一個叫做 CEnvi 的共享軟體中,它首次向開發人員展示了這種語言的威力。
Nombas 最終把 Cmm 的名字改成了 ScriptEase,原因是後面的部分(mm)聽起來過於消極,同時字母 C 「令人害怕」。
當 Netscape Navigator 嶄露頭角時,Nombas 開發了一個可以嵌入網頁中的 CEnvi 的版本。這些早期的試驗被稱為 Espresso Page(濃咖啡般的頁面),它們代表了第一個在萬維網上使用的客戶端語言。而 Nombas 絲毫沒有料到它的理念將會成為萬維網的一塊重要基石。
當網上沖浪越來越流行時,對於開發客戶端腳本的需求也逐漸增大。此時,大部分網際網路用戶還僅僅通過 28.8 kbit/s 的數據機連接到網路,即便這時網頁已經不斷地變得更大和更復雜。而更加加劇用戶痛苦的是,僅僅為了簡單的表單有效性驗證,就要與伺服器進行多次地往返交互。設想一下,用戶填完一個表單,點擊提交按鈕,等待了 30 秒的處理後,看到的卻是一條告訴你忘記填寫一個必要的欄位。
那時正處於技術革新最前沿的 Netscape,開始認真考慮開發一種客戶端腳本語言來解決簡單的處理問題。
當時工作於 Netscape 的 Brendan Eich,開始著手為即將在 1995 年發行的 Netscape Navigator 2.0 開發一個稱之為 LiveScript 的腳本語言,當時的目的是在瀏覽器和伺服器(本來要叫它 LiveWire)端使用它。Netscape 與 Sun 及時完成 LiveScript 實現。
就在 Netscape Navigator 2.0 即將正式發布前,Netscape 將其更名為 JavaScript,目的是為了利用 Java 這個網際網路時髦詞彙。Netscape 的賭注最終得到回報,JavaScript 從此變成了網際網路的必備組件。
因為 JavaScript 1.0 如此成功,Netscape 在 Netscape Navigator 3.0 中發布了 1.1 版。恰巧那個時候,微軟決定進軍瀏覽器,發布了 IE 3.0 並搭載了一個 JavaScript 的克隆版,叫做 JScript(這樣命名是為了避免與 Netscape 潛在的許可糾紛)。微軟步入 Web 瀏覽器領域的這重要一步雖然令其聲名狼藉,但也成為 JavaScript 語言發展過程中的重要一步。
在微軟進入後,有 3 種不同的 JavaScript 版本同時存在:Netscape Navigator 3.0 中的 JavaScript、IE 中的 JScript 以及 CEnvi 中的 ScriptEase。與 C 和其他編程語言不同的是,JavaScript 並沒有一個標准來統一其語法或特性,而這 3 種不同的版本恰恰突出了這個問題。隨著業界擔心的增加,這個語言的標准化顯然已經勢在必行。
2006年1月,jQuery的第一個版本面世,至今已經有10年多了(註:這個時間點是截止至出書時間)。雖然過了這么久,但它依然以其簡潔、靈活的編程風格讓人一見傾心。在本篇文章中,我們將講述jQuery的發展 歷史 ,讓讀者對jQuery有更多的了解。
在jQuery迅速發展的同時,一些大的廠商也看中了商機。2009年9月,微軟和諾基亞公司正式宣布支持開源的jQuery庫,另外,微軟公司還宣稱他們將把jQuery作為Visual Studio工具集的一部分。他將提供包括jQuery的智能提示、代碼片段、示例文檔編制等內容在內的功能。微軟和諾基亞公司將長期成為jQuery的用戶成員,其他成員還有Google,Intel,IBM,Intuit等公司。
2009年1月,jQuery 1.3版發布,它使用了全新的選擇符引擎Sizzle,在各個瀏覽器下全面超越其他同類型JavaScript框架的查詢速度,程序庫的性能也因此有了極大提升。這一版本的第2個變化就是提供live()方法,使用live()方法可以為當前及將來增加的元素綁定事件,在1.3版之前,如果要為將來增加的元素綁定事件,需要使用livequery插件,而在1.3版中,可以直接用live()方法。2005年8月,John Resig提議改進Prototype的「Behaviour」庫,於是他在blog上發表了自己的想法,並用了3個例子做說明。
2010年2月,jQuery 1.4.2版發布,它新增了有關事件委託的兩個方法:delegate()和undelegate()。delegate()用於替代1.3.2中的live()方法。這個方法比live()來的方便,而且也可以達到動態添加事件的作用。比如給表格的每個td綁定hover事件
特點
1.動態特效
2.AJAX
3.通過插件來擴展
4.方便的工具 - 例如瀏覽器版本判斷
5.漸進增強
6.鏈式調用
7.多瀏覽器支持,支持Internet Explorer6.0+、Opera9.0+、Firefox2+、Safari2.0+、Chrome1.0+(在2.0.0中取消了對Internet Explorer6,7,8的支持)
歷史 版本
jQuery 1.0
(2006年8月):該庫的第一個穩定版本,已經具有了對CSS選擇符、事件處理和AJAX交互的穩健支持。
jQuery 1.1
(2007年1月):這一版大幅簡化了API。許多較少使用的方法被合並,減少了需要掌握和解釋的方法數量。
jQuery 1.1.3
(2007年7月):這次小版本變化包含了對jQuery選擇符引擎執行速度的顯著提升。從這個版本開始,jQuery的性能達到了Prototype、Mootools以及Dojo等同類JavaScript庫的水平。
jQuery 1.2
(2007年9月):這一版去掉了對XPath選擇符的支持,原因是相對於CSS語法它已經變得多餘了。這一版能夠支持對效果的更靈活定製,而且藉助新增的命名空間事件,也使插件開發變得更容易。
jQuery UI(2007年9月):這個新的插件套件是作為曾經流行但已過時的Interface插件的替代項目而發布的。jQuery UI中包含大量預定義好的部件(widget),以及一組用於構建高級元素(例如可拖放的界面元素)的工具。
jQuery 1.2.6
(2008年5月):這一版主要是將Brandon Aaron開發的流行的Dimensions插件的功能移植到了核心庫中。
jQuery 1.3
(2009年1月):這一版使用了全新的選擇符引擎Sizzle,庫的性能也因此有了極大提升。這一版正式支持事件委託特性。
jQuery 1.3.2
(2009年2月):這次小版本升級進一步提升了庫的性能,例如改進了:visible/:hidden選擇符、.height()/.width()方法的底層處理機制。另外,也支持查詢的元素按文檔順序返回。
jQuery 1.4
(2010年1月14號):對代碼庫進行了內部重寫組織,開始建立一些風格規范。老的core.js文件被分為attribute.js,css.js,data.js,manipulation.js,traversing.js和queue.js;CSS和attribute的邏輯分離。
重要變化:
1. Ajax重寫
Ajax模塊完全進行了重寫。新增一個jXHR對象,為不同瀏覽器內置的XMLHttpRequest提供了一致的超集。對於XMLHttpRequest之外的傳輸機制,比如JSONP請求,jXHR對象也可以進行處理。(詳情可以參見:jQuery.ajax文檔)
此外,系統的可擴展性大大增強,可以附加各種數據處理器、過濾器和傳輸機制,為開發新的Ajax插件提供了方便。
2. 延遲對象
延遲對象(Deferred Object,jQuery.Deferred對象)是一個可鏈接的(chainable)實用工具對象,實現了Promise介面,可以在回調隊列中注冊多個回調、調用回調隊列並轉發任何同步/非同步函數的成敗狀態。正如Using Deferreds in jQuery 1.5一文中說明的,其結果是在jQuery中能夠將依賴於某個任務(事件)結果的邏輯與任務本身解耦了。這一點在JavaScript中其實並不新鮮,Mochikit和Dojo等已經實現有些日子了。由於jQuery 1.5的Ajax模塊內置使用了延遲對象,因此通過jQuery編寫Ajax程序將自動獲得這一功能。
開發人員藉此可以使用無法立即獲得的返回值(如非同步Ajax請求的返回結果),而且第一次能夠附加多個事件處理器。
例如,使用了新的jQuery內部Ajax API就可以實現下面的代碼了:
// Assign handlers immediately after making the request,// and remember the jxhr object for this request var jxhr = $.ajax({ url: "example.php" }) .success(function() { alert("success"); }) .error(function() { alert("error"); }) .complete(function() { alert("complete"); });// perform other work here ... // Set another completion function for the request above jxhr.complete(function(){ alert("second complete"); });
此外,使用jQuery.Deferred還可以開發自己的延遲對象。更多詳情參見:延遲對象文檔。
3. jQuery.sub()
jQuery 1.5提供了一種創建和修改jQuery副本的方式。可以用來添加不向外部公開的方法,或者對jQuery的某些方法進行重新定義以提供新功能,或者提供更好的封裝、避免名稱空間沖突。當然,也可以用來開發插件,但Resig強烈建議在開發插件之前,先考慮jQuery UI widget工廠。
值得注意的是,sub函數並不提供真正的隔離,所有方法、數據、調用仍然依靠jQuery本身來支持。
4. 遍歷性能提高
在新版本中.children(),.prev(),.next()幾個常用的遍歷函數性能有了顯著提高。
5. 內部開發系統
John Resig還特別提到了jQuery團隊內部開發系統的兩點改變:一是伺服器端用Node.js替換了老的Java/Rhino系統,使得團隊可以專注於JavaScript環境的新變化;二是所用的代碼優化程序從Google Closure切換到UglifyJS,新工具的壓縮效果非常令人滿意。
使用方法
jQuery可以下載使用,有兩個版本的 jQuery 可供下載
Proction version - 用於實際的網站中,已被精簡和壓縮。
Development version - 用於測試和開發(未壓縮,是可讀的代碼)
jQuery 1.8.0版時壓縮前後的對比
插件機制
jQuery的官方插件是jQuery UI。開發者可以任意擴展jQuery的函數庫或者按照自己的需求開發UI組件。網上已經有數以萬計的jQuery插件,覆蓋各種各樣的需求。例如Ajax輔助、數據表格、動態列表、XML工具、拖曳、cookie處理、彈出層等等。jQuery 的文檔說明很全,而且各種應用也說得很詳細,同時還有許多成熟的插件可供選擇,例如ComponentOne Studio for ASP NET Wijmo.
隨著jQuery插件在網站建設過程中的使用率不斷的增加,所以有必要跟進時代步伐開發出一些新的插件/代碼片段,以此來鞏固並提高前端用戶體驗,將用戶體驗提升到一個新的高度。其中包括Flat jQuery Price Slider、Gmaps jQuery Map Plugin 、FormChimp——MailChimp Ajax plugin for jQuery 等。
控制項
jQuery Gantt控制項是一個基於原生HTML5/jQuery,功能豐富的控制項,該控制項真正實現了跨平台,在許多設備和瀏覽器中無縫的運行。
使用項目甘特圖中內置的調度,依賴等功能實現任務分層列表的可視化。
使用資源甘特圖實現一個資源利用視圖。
使用基於API的jQuery或者基於API的MVC可幫您輕松地安裝甘特圖並加快應用速度。
可與諸如KnockOut(KO),jQuery.tmpl等流行的jQuery模式一同使用。
『伍』 jquery.min這個JS是什麼用
jquery.min.js是JS的一個框架。如果你這個頁面沒有用到jquery的話,可以刪掉,如果用到的話,就不可以刪掉。
並且建議引入的 這句話最好放在第一個JS來引入。否則 有可能會有問題
如何判斷是否用了JQUEYR?
你可以看下。
如果你JS代碼里有了類似$("")這樣的符號 ,就很可能用了jquery。這個最好不要刪
『陸』 jQuery的歷史版本
(2007年9月):這一版去掉了對XPath選擇符的支持,原因是相對於CSS語法它已經變得多餘了。這一版能夠支持對效果的更靈活定製,而且藉助新增的命名空間事件,也使插件開發變得更容易。
jQuery UI(2007年9月):這個新的插件套件是作為曾經流行但已過時的Interface插件的替代項目而發布的。jQuery UI中包含大量預定義好的部件(widget),以及一組用於構建高級元素(例如可拖放的界面元素)的工具。 (2010年1月14號):對代碼庫進行了內部重寫組織,開始建立一些風格規范。老的core.js文件被分為attribute.js,css.js,data.js,manipulation.js,traversing.js和queue.js;CSS和attribute的邏輯分離。
⒈4重要新特性
·常用方法的性能大幅提升:重寫了大部分較早期的函數;
·更容易使用的設置函數(setter function):為所有對象新增了許多易用的設置函數;
·對Ajax的改進:引入了許多Ajax和JSON處理方面的更新,包括HTML5元素的序列化;
·attribute(改進了.attr()的性能)、jQuery()核心函數、CSS(.css()性能有兩倍提升)、特效和事件、DOM操作等也有顯著改進 (2011年1月31日):該版本修復了83個bug,解決了460個問題。重大改進有:重寫了Ajax模塊;新增延緩對象(Deferred Objects);jQuery替身——jQuery.sub();增強了遍歷相鄰節點的性能;jQuery開發團隊構建系統的改進。
1.5新版本
美國時間2011年1月31日John Resig在jQuery官方博客發表文章,宣布jQuery 1.5正式版已經如期開發完成,可以下載使用。壓縮版本jQuery Minified29KB,不壓縮版本jQuery Regular(用於閱讀和調試)207KB。由於jQuery已經成為目前最流行的JavaScript庫,得到廣泛的支持,新版本的發布當然非常引人注目。
重要變化:
1. Ajax重寫
Ajax模塊完全進行了重寫。新增一個jXHR對象,為不同瀏覽器內置的XMLHttpRequest提供了一致的超集。對於XMLHttpRequest之外的傳輸機制,比如JSONP請求,jXHR對象也可以進行處理。(詳情可以參見:jQuery.ajax文檔)
此外,系統的可擴展性大大增強,可以附加各種數據處理器、過濾器和傳輸機制,為開發新的Ajax插件提供了方便。
2. 延遲對象
延遲對象(Deferred Object,jQuery.Deferred對象)是一個可鏈接的(chainable)實用工具對象,實現了Promise介面,可以在回調隊列中注冊多個回調、調用回調隊列並轉發任何同步/非同步函數的成敗狀態。正如Using Deferreds in jQuery 1.5一文中說明的,其結果是在jQuery中能夠將依賴於某個任務(事件)結果的邏輯與任務本身解耦了。這一點在JavaScript中其實並不新鮮,Mochikit和Dojo等已經實現有些日子了。由於jQuery 1.5的Ajax模塊內置使用了延遲對象,因此通過jQuery編寫Ajax程序將自動獲得這一功能。
開發人員藉此可以使用無法立即獲得的返回值(如非同步Ajax請求的返回結果),而且第一次能夠附加多個事件處理器。
例如,使用了新的jQuery內部Ajax API就可以實現下面的代碼了:
// Assign handlers immediately after making the request,// and remember the jxhr object for this request var jxhr = $.ajax({ url: example.php }) .success(function() { alert(success); }) .error(function() { alert(error); }) .complete(function() { alert(complete); });// perform other work here ... // Set another completion function for the request above jxhr.complete(function(){ alert(second complete); });
此外,使用jQuery.Deferred還可以開發自己的延遲對象。更多詳情參見:延遲對象文檔。
3. jQuery.sub()
jQuery 1.5提供了一種創建和修改jQuery副本的方式。可以用來添加不向外部公開的方法,或者對jQuery的某些方法進行重新定義以提供新功能,或者提供更好的封裝、避免名稱空間沖突。當然,也可以用來開發插件,但Resig強烈建議在開發插件之前,先考慮jQuery UI widget工廠。
值得注意的是,sub函數並不提供真正的隔離,所有方法、數據、調用仍然依靠jQuery本身來支持。
4. 遍歷性能提高
在新版本中.children(),.prev(),.next()幾個常用的遍歷函數性能有了顯著提高。
5. 內部開發系統
John Resig還特別提到了jQuery團隊內部開發系統的兩點改變:一是伺服器端用Node.js替換了老的Java/Rhino系統,使得團隊可以專注於JavaScript環境的新變化;二是所用的代碼優化程序從Google Closure切換到UglifyJS,新工具的壓縮效果非常令人滿意。
jQuery 1.5.2 在1.5的基礎上修正的大量的bug
jQuery 1.7b 2011年09月29日jQuery 1.7 的第一個 beta 測試版本,該版本修復了超過 50 個的問題以及帶來一些新特性。
2011年11月4日jQuery1.7正式版發布。
新版本包含了很多新的特徵,特別提升了事件委派時的性能尤其是在IE7下。
新增及改進項:
⒈新的事件 APIs: .on() and .off();
⒉提升了事件委派時的性能有了大幅度的提升,尤其是在IE7下;
⒊更好的在 IE 6/7/8 上支持 HTML5;
⒋切換動畫更加直觀;
⒌匿名模塊定義 AWD
⒍jQuery.Deferred
⒎jQuery.isNumeric()
被刪除的方法:
event.layerX and event.layerY
jQuery.isNaN() 2012年03月24日jQuery 1.7.2正式版發布。
該版本在1.7.1的基礎上修復了大量的bug,並改進了部分功能。而相比於1.7.2 RC1,只修復了一個bug。值得注意的是:如果你正在使用jQuery Mobile,請使用最新的jQuery 1.7.2和jQuery Mobile 1.1這兩個版本,因為之前的jQuery Mobile版本還基於jQuery core 1.7.1或更早的版本。 2012年11月14日 jQuery 1.8.3 發布,修復 bug 和性能衰退問題
IE8中的HTML相關Bug
jQuery 1.8.2在IE9中調用ajax失敗的問題
jQuery 1.7.1不能正確地設置IE7中克隆元素的tabindex屬性
壓縮的JS文件包含非ASCII字元
如果body樣式設置為display:none,則$('body').show()無法工作
在IE9中element.css('filter')返回不明確
在Android 2.3.4的瀏覽器中,jQuery 1.8.1轉場效果崩潰
在iPad上縮放一個燈箱效果後,所有動畫效果失效
從1.3.2升級到1.8.2版本後,出現Uncaught TypeError錯誤
在Chrome和Safari中,無法正確檢測包含可編輯內容的DIV的焦點 2013年3月 jQuery 2.0 Beta 2 發布
據jQuery官方博客3月消息,jQuery 2.0 Beta 2 發布。
根據用戶對jQuery 2.0 Beta 1 版本的反饋,Beta 2 版做了一些修改。jQuery官方表示,非常需要用戶來測試 Beta 2 版,最好同時也能向他們反饋提交建議。
他們相信,Beta 2 版已非常穩定,值得一試,不需要等 2.0 的最終版本。
jQuery 團隊在官博中再次提醒用戶,jQuery 2.0 不再支持IE 6/7/8 了,但是 jQuery 1.9 會繼續支持。因為舊版 IE 瀏覽器在整個互聯網中還有很大部分市場,所以他們非常期望大部分網站能繼續使用 jQuery 1.x 一段時間。jQuery 團隊也將同時支持 jQuery 1.x 和 2.x 。1.9 和 2.0 版的 API 是相同的,所以不必因為你們網站還在用 jQuery 1.9,就感覺好像錯過了什麼,或者是落後了。
如果你想繼續支持 IE 6/7/8,並且又想嘗試 jQuery 2.0,那你可以額外加上一些代碼。除了老版的 IE,其他所有瀏覽器都將使用第二腳本,忽略第一個。
在很多環境中,jQuery 2.0 應當都表現的很好。如下:
Google Chrome plugins
Mozilla XUL apps and Firefox extensions
Firefox OS apps
Chrome OS apps
Windows 8 Store (「Modern/Metro UI」) apps
BlackBerry 10 WebWorks apps
PhoneGap/Cordova apps
Apple UIWebView class
Microsoft WebBrowser control
Cheerio or jsdom with Node.js
Intranet applications
2013年4月18日 jQuery 2.0正式版發布 不再支持IE 6/7/8:如果在IE9/10版本中使用「兼容性視圖」模式也將會受到影響。 更輕更快:2.0版本文件與1.9.1相比小了12%。 可以構建一個更小、更輕量的版本。 jQuery 2.0 API完全兼容jQuery 1.9 API。 jQuery 1.9.1漢化版2013年2月23日發布,由網友翻譯非官方 2014年5月1日,jQuery2.1.1版發布
『柒』 為什麼我還在用 jQuery
許多人都在提倡: 「直接用原生的 JavaScript 就好了,不需要 jQuery 了」。
其實擺脫 jQuery 是一件很容易的事情。但是,下面這個例子其實恰恰可以告訴我們用 jQuery 其實也不錯,因為我們寫了 10 行原生的 JavaScript 代碼,其實只需要 1 行 jQuery 代碼就夠了。很多 JavaScript 的 API,尤其是 DOM 相關的 API,挑戰了我的審美哲學,直白點說,我覺得它們太糟糕了!
el.insertAdjacentElement('afterend', other)當然也可以用,但是$(el).after(other)更加簡潔。$()函數也沒那麼好看,我沒有特別喜歡,但是它比原生的 API 好太多了。
你們如何獲取某個元素的 sibling 呢?到底用nextSibling還是用nextElementSibling?它們有什麼不同?各個瀏覽器分別支持哪個方法?當你忙著去 MDN 查文檔的時候,我直接用 jQuery 的next和prev()就好了。
寫代碼的時候,我們總會需要使用一些常用的幫助函數,使用 jQuery 可以很方便的使用這些幫助函數,這樣我們就不需要每次都去 Stack OverFlow 上去復制代碼了。。。
瀏覽器的兼容問題已經沒有以前那麼頭疼了,但是它還是個不小的問題,除非你覺得只要 85%的用戶 OK 就行。
那麼,我們必須使用 jQuery 嗎?當然不是!使用任何第三方庫都是有代價的,增加了復雜度,也增加了文件大小。但是,jQuery 其實沒那麼大,壓縮之後的大小隻有 30K。如果我們去掉 ajax 以及一些不常用的功能的話,就只有 23K;如果我們使用 querySelector 替代 SizzleJS 來構建的話,則只有 17K 了。無論是 30K 還是 17K,對許多應用來說,這個大小都是完全可以接受的。
大家不妨看看Bootstrap removing jQuery,為了移除 jQuery,他們也是花了不少精力啊:自己擼幫助函數;放棄兼容 IE,因為太難寫了;他們花了 1 年半時間來倒騰這個。最終的結果在我看來,這些努力似乎不值得。
我理解他們為什麼這么做,大家希望在 Vue 項目中使用 Bootstrap,但是同時使用 Vue 和 jQuery 的話有點傻。對於減少網頁大小,我非常同意。但是,我們需要實際一點,不要過於理想主義。添加 17K 的 jQuery 真的那麼糟糕嗎?當我吐槽 Medium 或者 New York Times 這樣的網站需要的 JS 文件超過 1M 的時候,有的人會這樣反駁:」莫非你還在用 56k 的帶寬?「,但是,為什麼 17K 的 jQuery 就那麼不能接受了呢?
不用 jQuery 而自己寫幫助函數也可以,比如你希望你寫的函數被其他人復用,或者你寫的函數特別小。但是為了不用 jQuery,放棄向後兼容?那我覺得還是用 jQuery 得了。 所有事情都用 jQuery 實現當然不好 , 但是任何時候都不用 jQuery也不是什麼明智之舉。
我不是 jQuery 的狂熱粉絲,我也願意使用一些 簡化版的 jQuery ,只要它們可以讓 JS 的 API 更好用一點。
有些讀者也許會去比較 Vue, React 以及其他前端框架,但是這篇博客的目的是比較 jQuery 與原生的 JavaScript,沒有打算去論證整個前端到底應該如何開發。
其實我覺得有些場景下只使用簡單的 JavaScript 也挺好的,主要原因是我希望網頁可以足夠快,可以讓盡量多的人正常訪問。以我的經驗,使用服務端渲染,再加上漸進式增強 JavaScript,是最佳的實現方式,開發起來很簡單,訪問速度足夠快,BUG 也很少。
難道前端框架不好嗎?當然不是,沒有什麼絕對不好的技術,所有技術都有一定的取捨,當然也包括 jQuery。