jQuery是JS的工具庫,對原生JS中的DOM操作、事件處理、包括數據處理和Ajax技術等進行封裝,使用 . 鏈式寫法,提供更完善,更便捷的方法。
再使用jquery之前,我們需要先引入jquery文件,才能使用jquery語法,導入jQ文件的方法有兩種。
- 從 jquery.com 下載 jQuery 庫,本地導入(比較常用)
- 從 CDN(內容分發網絡)中載入 jQuery,Staticfile CDN、百度、新浪、谷歌和微軟的服務器都存有 jQuery 。
<head> // 本地導入 <script src="js/jquery.min.js"></script> // 從 Staticfile CDN 導入 <script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"> // 百度CDN <script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"> </head>
注意:使用CDN有一個很大的優勢,那就是許多用戶在訪問其他站點時,已經從百度、又拍雲、新浪、谷歌或微軟加載過 jQuery。當他們訪問您的站點時,會從緩存中加載 jQuery,這樣可以減少加載時間。同時,大多數 CDN 都可以確保當用戶向其請求文件時,會從離用戶最近的服務器上返回響應,這樣也可以提高加載速度。
查看jquery版本:在控制台輸入 $.fn.jquery
基本語法
工廠函數 $()
"$()"函數用於獲取元素節點,創建元素節點或將原生JS對象轉換為jquery對象,返回 jQuery 對象。jQuery 對象實際是一個類數組對象,包含了一系列 jQuery 操作的方法。 例 :
$() 獲取元素節點,需傳入字符串的選擇器
$("h1"); $("#d1"); $(".c1"); $("body,h1,p")
原生JS對象與jQuery對象
$("#tip") // jq對象 document.getElementById("tip") // 輸出dom對象
原生JS對象與jQuery對象的屬性和方法不能混用。可以根據需要,互相轉換 :
1、原生JS轉換jQuery對象:$(原生對象),返回 jQuery 對象
$(document.getElementById("tip")) // dom對象轉jq對象
2、jQuery對象轉換原生JS對象
- 方法一 : 根據下標取元素,取出即為原生對象 var div = $("div")[0];
- 方法二 : 使用jQuery的get(index)取原生對象 var div2 = $("div").get(0);
$("#tip")[0]; //jq對象轉dom對象
jQuery選擇器
jquery中所有選擇器都是以美元符號開頭的:$("選擇器"),基於元素的 id、類、類型、屬性、屬性值等"查找"(或選擇)HTML 元素。它基於已經存在的CSS選擇器之外,還有一些自定義的選擇器。
基礎選擇器
標簽選擇器: $("div")
ID 選擇器: $("#d1")
類選擇器: $(".c1")
群組選擇器: $("body,p,h1")
$("*"):選取所有元素
$(this):選取當前HTML元素
console.log($("#tip").attr("id")); // tip
層級選擇器
后代選擇器: $("div .c1")
子代選擇器: $("div>span")
相鄰兄弟選擇器: $("h1+p") 匹配選擇器1后滿足選擇器2后的第一個兄弟元素
通用兄弟選擇器: $("h1~h2") 匹配選擇器1后所有滿足選擇器2的兄弟元素
過濾選擇器
需要結合其他選擇器使用
:first 匹配第一個元素,例:$("p:first")
:last 匹配最后一個元素,例:$("p:last")
:odd 匹配奇數下標對應的元素
:even 匹配偶數下標對應的元素
:eq(index) 匹配指定下標的元素
:lt(index) 匹配下標小於index的元素
:gt(index) 匹配下標大於index的元素
:not(選擇器) 否定篩選,除()中選擇器外,其他元素
:first-child 第一個子元素
:last-child 匹配最后一個子元素
:nth-child(n) 匹配第n個子元素(n從1開始計數)
<ul> <li>張三</li> <li>李四</li> <li>王五</li> <li>劉八</li> <li>牛九</li> </ul> <script> $("li:eq(2)").css("font-size","30px"); $("li:first,li:last").css("color","red"); $("li:odd").css("background-color","red"); $("li:even").css("background-color","#ccc"); </script>
屬性選擇器
屬性選擇器以[ ]為標志
[attrName] 匹配包含指定屬性的元素
[attrName=value]/[attrName="value"] 匹配屬性名=屬性值的元素
[attrName^=value] 匹配屬性值以指定字符開頭的元素
[attrName$=value] 匹配屬性值以指定字符結尾的元素
[attrName*=value] 匹配屬性值包含指定字符的元素
文檔加載完畢
所有的jQuery函數基於文檔加載完畢后執行的。這是為了防止在文檔在完全加載之前運行jQuery代碼,即在DOM加載完成后才可以對DOM進行操作。
JS方法:window.onload
JQuery方法:
//語法一 $(document).ready(function (){ //文檔加載完畢后執行 }) //語法二 $().ready(function (){ //文檔加載完畢后執行 }) //語法三 $(function(){ //文檔加載完畢后執行 })
區別: 原生onload事件不能重復書寫,會產生覆蓋問題(寫了多個的話,只會執行最后一個);jquery中對事件做了優化,可以重復書寫ready方法,依次執行

// 只執行第二個 window.onload = function () { alert("原生頁面加載完成") }; window.onload = function () { alert("原生頁面加載完成2") }; // 依次執行 $(function () { alert("頁面加載完成") }); $(function () { alert("頁面加載完成2") });
jQuery事件
事件處理程序指的是當 HTML 中發生某些事件時所調用的方法。
常見的DOM事件:
鼠標事件 | 鍵盤事件 | 表單事件 | 文檔/窗口事件 |
---|---|---|---|
click | keypress | submit | load |
dblclick | keydown | change | resize |
mouseenter | keyup | focus | scroll |
mouseleave | blur | unload | |
hover |
在jQuery中,大多數DOM事件都有一個等效的jQuery方法。
// 方法一:on("事件名稱",function) $("div").on("click",function(){});//新版本使用的多些 // 方法二:bind("事件名稱",function) $("div").bind("click",function(){});//1.6-1.8間的版本 //方法三:事件名作為方法名 $("div").click(function(){ // 動作觸發后執行的代碼!! });
事件名稱省略 on 前綴
鼠標事件
- click():鼠標單擊元素時,觸發事件
- dblclick():當雙擊元素時,觸發事件
- mouseenter():當鼠標指針穿過元素時,觸發事件
- mouseleave():當鼠標指針離開元素時,觸發事件
- mousedown():當鼠標指針移動到元素上方,並按下鼠標按鍵時,觸發事件
- mouseup ():當在元素上松開鼠標按鈕時,觸發事件
- hover():當光標停留在元素上時,觸發事件
- focus():當元素獲取焦點時,觸發事件
- blur():當元素失去焦點時,觸發事件
鍵盤事件
- keypress():在鍵盤上按下某鍵時發生,一直按着則會不斷觸發, 它返回的是鍵盤代碼
- keydown():在鍵盤上按下一個按鍵,並產生一個字符時發生, 返回ASCII碼
- keyup():用戶松開某一個按鍵時觸發, 與keydown相對, 返回鍵盤代碼
案例:keypress事件獲取鍵入字符
$(window).keypress(function(event){ //event.which是獲取ASCII碼,前面的函數是將ASCII碼轉換成字符,空格鍵和Enter鍵輸出均為空白。 console.log(String.fromCharCode(event.which)); //從event對象中key屬性獲取字符,但是Enter鍵的key值為"Enter",空白鍵還是空白" "。 console.log(event.key); });
this表示事件的觸發對象,在jquery中可以使用,注意轉換類型。this為原生對象只能使用原生的屬性和方法,可以使用$(this)轉換為jquery對象,使用jquery方法。
jQuery效果
隱藏和顯示
通過 jQuery,您可以使用 hide() 和 show() 方法來隱藏和顯示 HTML 元素:
$("#hide").click(function(){ $("p").hide(); }); $("#show").click(function(){ $("p").show(); });
語法:
// 隱藏 $(selector).hide(speed,callback); // 顯示 $(selector).show(speed,callback);
參數:
- speed:規定隱藏/顯示的速度,可以取 "slow"、"fast" 或毫秒(1000毫秒=1秒)。可選參數
- callback:隱藏或顯示完成后所執行的函數名稱,可選
toggle()方法
顯示被隱藏的元素,並隱藏已顯示的元素,來切換 hide() 和 show() 方法。
$(selector).toggle(speed,callback);
參數同hide()和show()

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"> </script> <script> $(document).ready(function(){ $("button").click(function(){ $("p").toggle(); }); }); </script> </head> <body> <button>隱藏/顯示</button> <p>這是一個文本段落。</p> <p>這是另外一個文本段落。</p> </body> </html>
淡入淡出
jQuery 擁有下面四種淡入淡出 fade 方法:
- fadeIn():淡入
- fadeOut():淡出
- fadeToggle():淡入\淡出 切換
- fadeTo():設置不透明度(值介於0~1之間)
// 淡入 $(selector).fadeIn(speed,callback); // 淡出 $(selector).fadeOut(speed,callback); // 可在淡入淡出之間進行切換 $(selector).fadeToggle(speed,callback); // 允許漸變為給定的不透明度( opacity 值介於0與1之間) $(selector).fadeTo(speed,opacity,callback);
參數:
- speed:效果時長,它可以取以下值:"slow"、"fast" 或毫秒。可選參數
- callback:完成淡入效果后執行的函數

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"> </script> <script> $(document).ready(function(){ $("button").click(function(){ $("#div1").fadeTo("slow",0.15); $("#div2").fadeTo("slow",0.4); $("#div3").fadeTo("slow",0.7); }); }); </script> </head> <body> <p>演示 fadeTo() 使用不同參數</p> <button>點我讓顏色變淡</button> <br><br> <div id="div1" style="width:80px;height:80px;background-color:red;"></div><br> <div id="div2" style="width:80px;height:80px;background-color:green;"></div><br> <div id="div3" style="width:80px;height:80px;background-color:blue;"></div> </body> </html>
滑動
jQuery 擁有以下滑動方法:
- slideDown():向下滑動元素
- slideUp():向上滑動元素
- slideToggle():向上滑動和向下滑動 之間切換
// 向上滑動元素 $(selector).slideDown(speed,callback); // 向下滑動元素 $(selector).slideUp(speed,callback); // 向上滑動和向下滑動 之間切換 $(selector).slideToggle(speed,callback);
參數:
- speed:效果時長,它可以取以下值:"slow"、"fast" 或毫秒。可選參數
- callback:完成淡入效果后執行的函數

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"> </script> <script> $(document).ready(function(){ $("#flip").click(function(){ $("#panel").slideToggle("slow"); }); }); </script> <style type="text/css"> #panel,#flip { padding:5px; text-align:center; background-color:#e5eecc; border:solid 1px #c3c3c3; } #panel { padding:50px; display:none; } </style> </head> <body> <div id="flip">點我,顯示或隱藏面板。</div> <div id="panel">Hello world!</div> </body> </html>
動畫
jQuery animate()方法用於創建自定義動畫。
$(selector).animate({params},speed,callback);
參數:
- params:定義形成動畫的CSS屬性
- speed:效果時長,它可以取以下值:"slow"、"fast" 或毫秒。可選參數
- callback:動畫完成后所執行的函數名稱,可選參數
注意:
1、默認情況下,所有 HTML 元素都有一個靜態位置,且無法移動。如需對位置進行操作,要記得首先把元素的 CSS position 屬性設置為 relative、fixed 或 absolute!
2、animate()幾乎可以操作所有的屬性,但是要使用Camel標記法書寫,比如:使用 marginRight 而不是 margin-right
jQuery animate() - 操作多個屬性
$("button").click(function(){ $("div").animate({ left:'250px', opacity:'0.5', height:'150px', width:'150px' }); });
jQuery animate() - 使用相對值
$("button").click(function(){ $("div").animate({ left:'250px', height:'+=150px', width:'+=150px' }); });
jQuery animate() - 使用預定義的值
$("button").click(function(){ $("div").animate({ height:'toggle' // "show"、"hide" 或 "toggle": }); });
jQuery animate() - 使用隊列功能
但我們寫入多個animate()動畫時,jQuery會逐一運行這些animate。
$("button").click(function(){ var div=$("div"); div.animate({height:'300px',opacity:'0.4'},"slow"); div.animate({width:'300px',opacity:'0.8'},"slow"); div.animate({height:'100px',opacity:'0.4'},"slow"); div.animate({width:'100px',opacity:'0.8'},"slow"); });

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"> </script> <script> $(document).ready(function(){ $("button").click(function(){ var div=$("div"); div.animate({left:'100px'},"slow"); div.animate({fontSize:'3em'},"slow"); }); }); </script> </head> <body> <button>開始動畫</button> <p>默認情況下,所有的 HTML 元素有一個靜態的位置,且是不可移動的。 如果需要改變為,我們需要將元素的 position 屬性設置為 relative, fixed, 或 absolute!</p> <div style="background:#98bf21;height:100px;width:200px;position:absolute;">HELLO</div> </body> </html>
停止動畫
jQuery stop() 方法用於停止動畫或效果,在它們完成之前。
stop() 方法適用於所有 jQuery 效果函數,包括滑動、淡入淡出和自定義動畫。
$(selector).stop(stopAll,goToEnd);
參數:
- stopAll:是否清除動畫隊列,默認false。可選參數
- goToEnd:是否立即完成當前動畫,默認false。可選參數

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"> </script> <script> $(document).ready(function(){ $("#flip").click(function(){ $("#panel").slideDown(5000); }); $("#stop").click(function(){ $("#panel").stop(); }); }); </script> <style type="text/css"> #panel,#flip { padding:5px; text-align:center; background-color:#e5eecc; border:solid 1px #c3c3c3; } #panel { padding:50px; display:none; } </style> </head> <body> <button id="stop">停止滑動</button> <div id="flip">點我向下滑動面板</div> <div id="panel">Hello world!</div> </body> </html>
jQuery 鏈(Chaining)
鏈接(chaining)技術,允許我們在相同的元素上運行多條 jQuery 命令,一條接着另一條。
例如: css()、slideUp() 和 slideDown() 鏈接在一起。"p1" 元素首先會變為紅色,然后向上滑動,再然后向下滑動:
$("#p1").css("color","red").slideUp(2000).slideDown(2000);
jQuery HTML
jQuery能夠操作HTML元素和屬性。
讀取\設置 內容
括號中為空時為讀取,括號中有值時為設置。
- .html() 設置或讀取標簽內容(包括HTML標記),等價於原生innerHTML
- .text() 設置或讀取元素的文本內容,等價於innerText,不能識別標簽
- .val() 設置或讀取表單元素的值,等價於原生value屬性
// 讀取 $("#btn1").click(function(){ alert("Text: " + $("#test").text()); }); $("#btn2").click(function(){ alert("HTML: " + $("#test").html()); });

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"> </script> <script> $(document).ready(function(){ $("#btn1").click(function(){ $("#test1").text("Hello world!"); }); $("#btn2").click(function(){ $("#test2").html("<b>Hello world!</b>"); }); $("#btn3").click(function(){ $("#test3").val("RUNOOB"); }); }); </script> </head> <body> <p id="test1">這是一個段落。</p> <p id="test2">這是另外一個段落。</p> <p>輸入框: <input type="text" id="test3" value="菜鳥教程"></p> <button id="btn1">設置文本</button> <button id="btn2">設置 HTML</button> <button id="btn3">設置值</button> </body> </html>
讀取/設置 屬性
attr("attrName","value") :設置或讀取標簽屬性
prop("attrName","value") :設置或讀取標簽屬性。注意:在設置或讀取元素屬性時,attr()和prop()基本沒有區別;但是在讀取或設置表單元素(按鈕)的選中狀態時,必須用prop()方法,attr()不會監聽按鈕選中狀態的改變,只看標簽屬性checked是否書寫
removeAttr("attrName"):移除指定屬性
$("button").click(function(){ $("#runoob").attr({ "href" : "http://www.runoob.com/jquery", "title" : "jQuery 教程" }); });
attr 和 prop 的區別
<input type="checkbox" name="marry1" checked id="marry1">婚否 //獲取jq對象 console.log($("#marry1").attr("checked")); // checked console.log($("#marry1").prop("checked")); // true <input type="checkbox" name="marry2" id="marry2">婚否 //獲取jq對象 console.log($("#marry2").attr("checked")); // undefined console.log($("#marry2").prop("checked")); // false
添加元素
jQuery添加元素有四種方法:
- append():在被選元素的結尾插入內容
- prepend():在被選元素的開頭插入內容
- after():在被選元素之后插入內容
- before():在被選元素之前插入內容
1)作為子元素添加
$("p").append("追加文本");
$("p").prepend("在開頭追加文本");
2)作為兄弟元素添加
$("img").after("在后面添加文本");
$("img").before("在前面添加文本");
3)移除元素
移除元素有兩種方法:
- remove():刪除被選元素(及其子元素)
- empty():從被選元素中刪除子元素
// remove() 方法刪除被選元素及其子元素。 $("#div1").remove(); // empty() 方法刪除被選元素的子元素 $("#div1").empty();
remove() 方法也可接受一個參數,允許您對被刪元素進行過濾。
// 刪除 class="italic" 的所有 <p> 元素 $("p").remove(".italic");
獲取並設置CSS類
jQuery擁有以下操作CSS的方法:
- addClass():向被選元素添加一個或多個類
- removeClass():從被選元素刪除一個或多個類
- toggleClass():對被選元素進行添加/刪除類的切換操作
- css():設置或返回被選元素的一個或多個樣式屬性。
$("button").click(function(){ // 添加blue類名 $("h1,h2,p").addClass("blue"); // 刪除blue類名 $("h1,h2,p").removeClass("blue"); // 如果有blue類名,則刪除,如果沒有則添加 $("h1,h2,p").toggleClass("blue"); });
讀取和設置CSS屬性
// 讀取CSS屬性 $("p").css("background-color"); // 設置CSS屬性 $("p").css({"background-color":"yellow", "font-size":"200%"});
jQuery 尺寸
- width():設置或返回元素的寬度(不包括內邊距、邊框或外邊框)
- height():設置或返回元素的高度(不包括內邊距、邊框或外邊框)
- innerWidth():返回元素的寬度(包括內邊距)
- innerHeight():返回元素的高度(包括內邊距)
- outerWidth():返回元素的寬度(包括內邊距和邊框)
- outerHeight():返回元素的高度(包括內邊距和邊框)
$("button").click(function(){ var txt=""; txt+="div 的寬度是: " + $("#div1").width() + "</br>"; txt+="div 的高度是: " + $("#div1").height(); $("#div1").html(txt); });
jQuery 遍歷
jQuery意思就是“移動”,用於根據相對於其他元素的關系來“查找”HTML元素。以某項選擇開始,並沿着這個選擇移動,直到抵達您期望的元素為止。
遍歷祖先元素
- .parent() :返回父元素
- .parents('selector'):返回滿足選擇器的所有祖先元素
- .parentsUntil("selector"):返回選擇器選擇元素和 . 之前對象元素 之間的所有祖先元素
$(document).ready(function(){ $("span").parent(); });
遍歷后代
- .children() / children("selector"):返回所有直接子元素 / 返回滿足選擇器的直接子元素
- .find("selector"):返回所有的后代元素(包含直接與間接)
// 返回屬於 <div> 后代的所有 <span> 元素 $(document).ready(function(){ $("div").find("span"); });
遍歷同胞
- .siblings() / siblings("selector"):返回所有的兄弟元素 / 滿足選擇器的所有兄弟元素
- .next() / next("selector"):返回下一個兄弟元素 / 返回下一個兄弟元素,必須滿足選擇器
- .nextAll():返回被選元素的所有跟隨的同胞元素。
- .nextUntil("selector"):返回介於兩個給定參數之間的所有跟隨的同胞元素。
- .prev() / prev("selector"):返回前一個兄弟元素 / 返回前一個兄弟元素,要求滿足選擇器
// 返回 <h2> 的所有同胞元素 $(document).ready(function(){ $("h2").siblings(); });
過濾
三個最基本的過濾方法是:first(), last() 和 eq()。
- first():返回被選元素的首個元素
- last():返回被選元素的最后一個元素
- eq():返回被選元素中帶有指定索引號的元素,索引從0開始
- filter("selector"):返回選擇器選擇的元素
- not("selector"):返回除了選擇器選擇以外的元素
$(document).ready(function(){ $("p").eq(1); });
jQuery - AJAX 簡介
AJAX 是與服務器交換數據的技術,它在不重載全部頁面的情況下,實現了對部分網頁的更新。
load()方法
load()方法從服務器加載數據,並把返回的數據放在被選元素中。
$(selector).load(URL,data,callback);
參數:
- URL:希望加載的URL
- data:規定與請求一同發送的查詢字符串鍵/值對集和,可選參數
- callback:完成后所執行的函數,可選參數
// 把文件 "demo_test.txt" 的內容加載到指定的 <div> 元素中 $("#div1").load("demo_test.txt"); // 把 "demo_test.txt" 文件中 id="p1" 的元素的內容,加載到指定的 <div> 元素中 $("#div1").load("demo_test.txt #p1");
AJAX get() 和 post() 方法
get() 和 post() 方法用於通過 HTTP GET 或 POST 請求從服務器請求數據。
- GET:從指定的資源請求數據
- POST:向指定的資源提交要處理的數據
jQuery $.get() 方法
$.get() 方法通過 HTTP GET 請求從服務器上請求數據。
$.get(URL,callback);
參數:
- URL:希望請求的URL
- callback:請求成功后所執行的函數名,可選參數
$("button").click(function(){ $.get("demo_test.php",function(data,status){ alert("數據: " + data + "\n狀態: " + status); }); });
注:第一個回調參數存有被請求頁面的內容,第二個回調參數存有請求的狀態。
jQuery $.post() 方法
$.post() 方法通過 HTTP POST 請求向服務器提交數據。
$.post(URL,data,callback);
參數:
- URL:希望請求的 URL
- data:規定連同請求發送的數據
- callback:請求成功后所執行的函數名
// 使用 $.post() 連同請求一起發送數據 $("button").click(function(){ $.post("/try/ajax/demo_test_post.php", { name:"菜鳥教程", url:"http://www.runoob.com" }, function(data,status){ alert("數據: \n" + data + "\n狀態: " + status); }); });
注:第一個回調參數存有被請求頁面的內容,而第二個參數存有請求的狀態。
獨立文件中使用 jQuery 函數
如果您的網站包含許多頁面,並且您希望您的 jQuery 函數易於維護,那么請把您的 jQuery 函數放到獨立的 .js 文件中。
當我們在教程中演示 jQuery 時,會將函數直接添加到 <head> 部分中。不過,把它們放到一個單獨的文件中會更好,就像這樣(通過 src 屬性來引用文件):
<head> <script src="http://cdn.static.runoob.com/libs/jquery/1.10.2/jquery.min.js"> </script> <script src="my_jquery_functions.js"></script> </head>
有時候我們獨立的js文件或css文件寫完后都會用《在線格式化》,這樣方便加載。