jQuery是一個兼容多瀏覽器的javascript庫(函數庫),核心理念是write less, do more(寫得更少,作的更多)。javascript
JQuery,顧名思義,就是JavaScript和查詢 (Query),便是輔助JavaScript開發的庫。css
Query 是一個快速的簡潔的javascript框架,能夠簡化查詢DOM對象、處理事件、製做動畫、處理Ajax交互過程。html
程序員的角度:簡化JavaScript和Ajax編程,可以使程序員從設計和書寫繁雜的JS應用中解脫出來,將關注點轉向功能需求而非實現細節上,從而提升項目的開發速度。java
用戶體驗的角度:改善了頁面視覺效果,加強了與頁面的交互性,體驗更絢麗的網頁物資。程序員
快速實現通訊(ajax)ajax
jQuery庫文件不須要安裝,只需使用 < script >標籤引入到HTML文件中,拿到jQuery的庫文件後,就跟本身寫的JS文件一樣的引入方式,便可,如下是幾種引入方式:編程
1) 引入本地的Jquery瀏覽器
2) 引入cdn在線提供的庫文件(穩定可靠高速)框架
$(document).ready(function(){})和window.onload 的區別:less
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> </head> <body> <div id="box">123123</div> </body> </html> <script src="js/jQuery.js"></script> <script type="text/javascript"> // 相似於延遲加載 $(function() { console.log("xixi"); }); //徹底體 $(document).ready(function() { // 原生dom let oBox = document.getElementById("box"); console.log(oBox.innerHTML); //jQueryDom console.log($("#box").html()); }); </script>
jQuery所獲取的全部dom元素不管是一個仍是一組,都封裝成一個jQuery包裝集,即集合。
jQuery包裝集與DOM 對象的互轉:
原生Dom -> jQueryDom
let oBox = document.getElementById("box"); console.log($(oBox).html());
jQueryDom -> 原生Dom
// 方法1: let oBox = $("div").get(0); // 方法2: let oBox = $("div")[0]; console.log(oBox.innerHTML);
// 方法1: // $("#box1").css("backgroundColor", "red"); // 方法2: 相似css代碼 $("#box1").css({ backgroundColor: "red" });
$(".box").css({backgroundColor: "red"});
$("p").css({color: "red"});
$("p,span,strong").css({color: "red"});
(這是選擇所有元素)
$("*").css({backgroundColor: "green"});
空格
後代:不僅是子代
$("body div").css({backgroundColor: "red"});
大於號
$("body>div").css({backgroundColor: "red"});
加號
$("#box1+div").css({backgroundColor: "red"});
波浪號~
$("#box2~div").css({backgroundColor: "red"});
[屬性名/屬性名=屬性值...]
<script type="text/javascript"> // div帶有class屬性的選擇器 $("div[class]").css({backgroundColor:"red"}); // div同時帶有多個屬性的選擇器 $("div[class][id]").css({backgroundColor:"red"}); // 經過指定的屬性值來獲取元素 $("div[id='box1']").css({backgroundColor:"red"}); </script>
:even 獲取全部偶數行的元素
// 注意:從第0行開始 $("div:even").css({backgroundColor:"red"});
:odd 獲取全部奇數行的元素
$("div:odd").css({backgroundColor:"red"});
:first 獲取第0個元素
$("div:first").css({backgroundColor: "red"});
:last 獲取最後一個元素
$("div:last").css({backgroundColor:"red"});
:eq(下標) 根據下標獲取某個特定的元素
//寫法1: $("div:eq(2)").css({backgroundColor: "red"}); //寫法2: let n = 3; $("div").eq(n).css({backgroundColor: "red"});
:not(目標元素) 除了某個元素
//寫法1: $("div:not('#box3')").css({backgroundColor: "red"}); //寫法2: $("div").not("#box3").css({backgroundColor: "red"});
:gt(n) 獲取大於n的元素
$("div:gt(2)").css({backgroundColor:"skyblue"});
:lt(n) 獲取小於n的元素
$("div:lt(2)").css({backgroundColor:"red"});
:contains(內容) 根據元素的內容,獲取元素
$("div:contains('hello world')").css({backgroundColor: "red"});
:empty 選中內容爲空的元素,空格換行都不能有
$("div:empty").css({backgroundColor:"red"});
:has(選擇器) 根據包含的元素來進行選擇
$("div:has('span')").css({backgroundColor:"red"});
:visible 改變可見元素的樣式
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> </head> <body> <table> <tr style="display:none"> <td>Value 1</td> </tr> <tr> <td>Value 2</td> </tr> </table> </body> </html> <script class="lazy" data-src="js/jQuery.js"></script> <script type="text/javascript"> // :hidden 選中隱藏的元素 $("tr:hidden").css({backgroundColor:"red"}); // :visible 改變可見元素的樣式 $("tr:visible").css({backgroundColor:"green"}); </script>
jQuery 遍歷,意爲「移動」,用於根據其相對於其餘元素的關係來「查找」(或選取)HTML 元素。以某項選擇開始,並沿着這個選擇移動,直到抵達您指望的元素爲止。
下圖展現了一個家族樹。經過 jQuery 遍歷,您可以從被選(當前的)元素開始,輕鬆地在家族樹中向上移動(祖先),向下移動(子孫),水平移動(同胞)。這種移動被稱爲對 DOM 進行遍歷。
圖示解釋:
$("#box1").next().css({backgroundColor: "red"});//連綴模式 $("#box1").nextAll().css({backgroundColor: "red"});
parent() 找父節點
$("p").eq(1).parent().css({backgroundColor:"red"});
找子節點
children (能夠不寫參數)
$("body").find("span").css({backgroundColor: "red"}); $("body").children().css({backgroundColor: "red"});//body的孩子(父子關係)
jQuery特色:關於讀寫的函數,一般都是一個,無參爲讀,有參爲寫。
<script type="text/javascript"> // 讀 console.log($("div").html()); // 寫 $("div").html(567); // 讀 console.log($("input").val()); // 寫 $("input").val(888); </script>
Query的事件:
$("#box").click(function(){ //this要轉成jQueryDom的this $(this).css({backgroundColor: "red"}); })
傳參:
$("#box").click({name:"小明",age:18},function(evt){ console.log(evt.data);//{name:"小明",age:18} })
jQueryDom對象.show([speed,[easing],[fn]);
等價於:jQueryDom對象.hide([時間],[切換效果],[回調函數]);
參數speed
參數easing
參數fn回調函數
舉例:
$('button').eq(0).click(function() { // 用1000毫秒將box元素隱藏,動畫完成後執行回調,打印heihei //注意:動畫須要時間,是異步,異步完成後再執行回調函數 $("#box").hide(1000, function() { console.log('heihei'); }) }); //作一些奇奇怪怪的事情 $("button").eq(2).click(function() { // 回調 $("#box").fadeToggle(1000, arguments.callee); });
stop([clearQueue],[jumpToEnd])
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <style type="text/css"> #box { width: 200px; height: 200px; background-color: pink; position: absolute; } </style> </head> <body> <button type="button">變形</button> <button type="button">中止</button> <div id="box"> </div> </body> </html> <script class="lazy" data-src='jQuery.js'></script> <script type="text/javascript"> $("button").eq(0).click(function() { //連綴模式 $("#box").animate({ height: 100, width: "300px", left: 1000 }, 1000, function() { console.log(1); }).animate({ top: 600 }, 2000, function() { console.log(2); }).animate({ left: 0 }, 2000, function() { console.log(3); }).animate({ top: 50 }, 2000, function() { console.log(4); }); }); $("button").eq(1).click(function() { // 結束當前動畫,其餘動畫正常執行 // $("#box").stop();//無參默認爲兩個false // 中止全部動畫隊列 // $("#box").stop(true,false); //當即執行完當前動畫,其餘動畫正常執行 // $("#box").stop(false,true); //當即執行完當前動畫,並清空動畫隊列 $("#box").stop(true, true); }); </script>
案例:手風琴
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <style type="text/css"> * { margin: 0; padding: 0; } ul { width: 500px; height: 150px; background-color: #FFC0CB; margin: auto; /* position: relative; */ } li { list-style: none; float: left; width: 40px; height: 150px; overflow: hidden; border: 1px solid black; } img { height: 150px; width: 240px; background-size: 240px; } </style> </head> <body> <ul> <li> ![](img/1.jpg) </li> <li> ![](img/2.jpg) </li> <li> ![](img/3.jpg) </li> <li> ![](img/4.jpg) </li> <li> ![](img/5.jpg) </li> </ul> </body> </html> <script src="jQuery.js"></script> <script type="text/javascript"> $('li').mouseover(function() { $(this).stop().animate({ width: 240 }).siblings('li').stop().animate({ width: 40 }); }); </script>