簡介
jQuery由美國人John Resig創建,至今已吸引了來自世界各地的眾多javascript高手加入其team,包括來自德國的Jörn Zaefferer,羅馬尼亞的Stefan Petre等等。jQuery是繼prototype之後又一個優秀的Javascrīpt框架。其宗旨是——WRITE LESS,DO MORE,寫更少的代碼,做更多的事情。它是輕量級的js庫(壓縮後只有21k) ,這是其它的js庫所不及的,它兼容CSS3,還兼容各種瀏覽器 (IE 6.0+, FF 1.5+, Safari 2.0+, Opera 9.0+)。jQuery是一個快速的,簡潔的javaScript庫,使用戶能更方便地處理HTML documents、events、實現動畫效果,並且方便地為網站提供AJAX互動。
jQuery還有一個比較大的優勢是,它的文檔說明很全,而且各種套用也說得很詳細,同時還有許多成熟的外掛程式可供選擇。
jQuery能夠使用戶的html頁保持代碼和html內容分離,也就是說,不用再在html裡面插入一堆js來調用命令了,只需定義id即可。
特性
1、精準簡單的選擇對象(dom):以下為引用的內容:
$('#element');// 相當於document.getElementByI“element”)
$('.element');//Class
$('p');//html標籤
$(“form > input”);//子對象
$(“div,span,p.myClass”;//同時選擇多種對象
$(“tr:odd”).css(“background-color”, “#bbbbff”)。//表格的隔行背景
$(“:input”);//表單對象
$(“input[name="newsletter"]”);//特定的表單對象
2、對象函式的套用簡單和不限制:
element.function(par);
$(”p.surprise”).addClass(”ohmy”).show(”slow”)...
3、對已選擇對象的操作(包括樣式):
以下為引用的內容:
$(“#element”)。addClass(“selected”);//給對象添加樣式
$('#element').css({ “background-color”:“yellow”, “font-weight”:“bolder” });//改變對象樣式
$(“p”)。attr({ src:“test.jpg”, alt: “Test Image”});//改變對象文本
$(“p”)。find(“span”;//查找對象內部的對應元素
$(“p”)。parent();//對象的父級元素
$(“p”),append(“Hello”);//給對象添加內容
4、支持aJax,支持檔案格式:xml/html/script/json/jsonp
以下為引用的內容:$(“#feeds”),load(“feeds,html”),//相應區域導入靜態頁內容$(“#feeds”),load(“feeds.php”, {limit: 25}, function(){alert(“The last 25 entries in the feed have been loaded”);});//導入動態內容
4、對事件的支持:
以下為引用的內容:
$(“p”),hover(function () {$(this).addClass(“hilite”);//滑鼠放上去時}, function () {$(this).removeClass(“hilite”);//移開滑鼠});//滑鼠放上去和移開的不同效果(自動循環所有p對象)
5、動畫:
以下為引用的內容:
$(“p”),show(“slow”);//隱藏對象(慢速漸變)
$(“#go”),click(function(){
$(“#block”),animate({width:“90%”,height: “100%”。fontSize:“10em”}, 1000 );});//滑鼠點擊後寬、高、字型的動態變化
6、擴展:
以下為引用的內容:
$.fn.background = function(bg){return this.css('background', bg);};
$(#element).background(“red”);如果要為每一個jQuery對象添加一個函式,必須把該函式指派給 $.fn,同時這個函式必須要返回一個this(jQuery對象)
官網
jQuery是一個以前未曾有過的JavaScript庫。他快速、簡潔,能夠很輕易地處理HTML文檔、控制事件、給頁面添加動畫和Ajax效果。
jQuery是為了改變JavaScript的編寫方式而設計的。
他適合所有人:設計師、開發人員、極客、商業套用...
體積小:26.5KB(1.2.1壓縮版),45.3KB(1.2.1精簡版),78.6KB(1.2.1完整版)...20.7KB(1.1.2壓縮版),57.9KB(1.1.2完整版)
兼容性:支持CSS 1-3和基本的XPath
跨瀏覽器:IE 6.0+, FF 1.5+, Safari 2.0+, Opera 9.0+(向後兼容)
外掛程式
Ajax (25)/Animation and Effects (26)/Browser Tweaks (6)/Data (17)/DOM (21)/Drag-and-Drop (6)/Events (19)/Forms (39)/Integration (12)/JavaScript (20)/jQuery Extensions (37)/Layout (23)/Media (13)/Menus (13)/Navigation (23)/Tables (11)/User Interface (84)/Utilities (27)/Widgets (41)/Windows and Overlays (4)
UI庫
基本的滑鼠互動:拖拽(drag and dropping)、排序(sorting)、選擇(selecting)、縮放(resizing)
各種互動效果:手風琴式的摺疊選單(accordions)、日曆(date pickers)、對話框(dialogs)、滑動條(sliders)、表格排序(table sorters)、頁簽(tabs)、放大鏡效果(Magnifier)、陰影效果(shadow)
版本
jQuer1.4.2版本修復了1.4版本的一些錯誤和最佳化了一些不錯的改進,速度比1.4.1版本又提升了一倍,該版本對性能做了一些改進,同時增加了一些api ( .delegate() and .undelegate(). ),右圖是JQuery各個版本的性能比較:jquery1.42新特性:
加了兩個新方法:.delegate()和.undelegate().是對.live()and.die()的補充.這兩個方法對特定的事件的起到簡化。
範例:
$(“table”),delegate(“td”,“hover”,function(){$(this),toggleClass(“hover”);});等於使用.live():
$(“table”).each(function(){$(“td”,this).live(“hover”,function(){$(this),toggleClass(“hover”);});});
另外,以下代碼中,live()基本上等同於.delegate().
$(document).delegate(“td”,“hover”,function(){$(this).toggleClass(“hover”;});
變更
大量代碼進行了重寫,提升了性能及修正了一些長期存在的問題。
提升性能
每次開發新的jquery版本,我們都努力去持續最佳化性能,以保證你能用到最高性能的javascript代碼。
在Taskspeedbenchmark的測試中,1.4.2比1.4.1快1倍,比1.3.2快2倍。
主要是在下面4個方面進行了提升:
.bind()和.unbind().
.empty(),.remove(),和.html().
插入單個DOM節點到document.
$(“body”)
在測試用例中,比較多的用到了$(“body”),.bind(),.unbind()方法,因此測試結果提升比較明顯。
v重寫事件
eventhandlers不再作為一個對象屬性保存在jQuery的內部對象里。現在是保存在一個內部的對象數組裡。v現在可以通過調用data(“events”),將會返回一個對象包含的所有事件類型。
現在可以使用不同的數據、命名空間、事件類型綁定在同一個handler
在一個handler清除自己之後,事件handler會繼續執行
不用關聯數據或者命名空間到事件handler
不用再使用代理方法
事件執行的順序在所有瀏覽器中得到保證,GoogleChrome中出現的對象循環邏輯問題已經得到解決.