jQuery 介紹javascript
jQuery 優勢css
$(document).ready(funtion(){
$("#box").html("Hello").width(400).height(300).css("border","1px solid #ccc").css("padding","10px").append("<p>Hello</p>");
})
複製代碼
獲取 jQueryhtml
官網下載所需版本java
從 CDN 服務器上引用,如 www.bootcdn.cn/jqueryjquery
<script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script>
複製代碼
npm 中運行 npm install jquery
命令自動下載ajax
jQuery 版本chrome
jQuery 的兼容性引入npm
<!--使用 IE 瀏覽器的條件註釋-->
<!--chrome、firefox、safari、opera、ie9 及以上-->
<!--[if gt IE 8]>-->
<script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script>
<!--<![endif]-->
<!--ie8 及如下-->
<!--[if lte IE 8]> <script src="https://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script> <![endif]-->
複製代碼
jQuery 的使用json
// jQuery 入口函數
$(document).ready(function () {
// code...
});
$(function () {
// code...
});
複製代碼
$(document).ready() 和 window.onload 功能類似,但存在差別api
jQuery Dom 對象
querySelector("#box"):原生 js dom 對象
$("#box"):jquery dom 對象,不能使用原生方法
相互轉換
let jsBox = document.querySelector("#box");
$(jsBox).html("Hello");// 使用 $(),js dom object -> jq dom object
let jqBox=$("#box");// 獲取到的是一個 dom object 的集合
jqBox[0].innerHTML="Hello";// 使用 [下標],jq dom object -> js dom object
複製代碼
jQuery 全局對象
<
開頭的標籤,建立元素,可以使用 appendTo
加入到頁面中基本選擇器
$("#box") // id selector 選擇 id 爲 box 的標籤
$(".item") // class selector 選擇 class 爲 item 的標籤
$("li") // tag name selector 選擇所有 li 標籤
$("*") // gloal selector 選擇所有標籤
$("li.item") // combo selector 選擇 clss 爲 item 的 li 標籤
$("li,p") // multi selector 選擇全部 li 和 p 標籤
複製代碼
層級選擇器
$("ul li") // 選擇 ul 後代元素中的 li
$("ul>li") // 選擇 ul 子元素中的 li
$("#item+li") // 選擇 #item 後一個兄弟元素
$("#item~li") // 選擇 #item 後全部兄弟元素
複製代碼
篩選選擇器
$("ul li:first") // 選擇 li 中的第一個 li 標籤
$("ul li:last") // 選擇 li 中的最後一個 li 標籤
$("ul li:eq(i)") // 選擇 li 中第 i 個,從 0 開始
$("ul li:lt(i)") // 選擇 li 中小於 i 的,從 0 開始
$("ul li:gt(i)") // 選擇 li 中大於 i 的,從 0 開始
$("ul li:odd") // 選擇奇數次序的元素,從 0 開始
$("ul li:even") // 選擇偶數次序的元素,從 0 開始
$("ul li:not(.item)") // 選擇 li 中 class 不是 item 的元素
$(":header") // 選擇全部標題標籤
$(":focus") // 選擇獲取焦點的元素
$(":target") // 選擇 url 指向的錨點元素,錨點能夠是 a 標籤,也能夠是 id
複製代碼
內容選擇器
$("li:contains(str)") // 選擇內部包含 str 的 li 標籤
$("li:has(.item)") // 選擇包含 class 是 item 的後代元素的 li 標籤
$("ul li:empty") // 選擇沒有內容的 li,innerHTML.length = 0
$("ul li:parent") // 選擇有內容(文本或子元素)的 li,innHTML.length != 0
複製代碼
可見性選擇器
$(":visible") // 選擇可見元素
$(":hidden") // 選擇不可見元素
複製代碼
屬性選擇器
$("img[alt]") // 選擇有 alt 屬性的 img 標籤
$("img[alt='str']") // 選擇有 alt = 'str' 的 img 標籤
$("img[alt!='str']") // 選擇有 alt != 'str' 的 img 標籤
$("img[alt^='s']") // 選擇有 alt 以 s 開頭的 img 標籤
$("img[alt$='r']") // 選擇有 alt 以 r 結尾的 img 標籤
$("img[alt][title]") // 選擇同時具備 alt、title 屬性的 img 標籤
複製代碼
子元素選擇器
// -child 對全部兄弟元素排序,從 1 開始
$("li:first-child") // 選擇是 li 且排在全部兄弟元素第一個的 li 標籤
$("li:last-child") // 選擇是 li 且排在全部兄弟元素最後一個的 li 標籤
$("li:nth-child(i)") // 選擇是 li 且排在全部兄弟元素第 i 個的 li 標籤
$("li:nth-last-child(i)") // 選擇 li 且排在全部兄弟元素倒數第 i 個 li 標籤
$("li:only-child") // 選擇沒有兄弟元素的 li 標籤
// -of-type 對指定標籤元素排序,從 1 開始
$("li:first-of-type") // 選擇是 li 且排在全部兄弟 li 第一個的 li 標籤
$("li:last-of-type") // 選擇是 li 且排在全部兄弟 li 最後一個的 li 標籤
$("li:nth-of-type(i)") // 選擇是 li 且排在全部兄弟 li 第 i 個的 li 標籤
$("li:nth-last-of-type(i)") // 選擇是 li 且排在全部兄弟 li 倒數第 i 個的 li 標籤
$("li:only-of-type") // 選擇能夠有兄弟元素,但同標籤元素只有它一個的 li 標籤
複製代碼
表單選擇器
// 表單控件選擇器
$(":input") //選擇全部表單控件 input/select/textarea/button...
$(":text") // 選擇文本框
$(":password") // 選擇密碼框
$(":radio") //選擇單選按鈕
$(":checkbox") // 選擇多選按鈕
$(":file") //選擇文本域
$(":submit") // 選擇 input(type=submit)、button(不指定 type 或 type=submit)
$(":reset") // 選擇 input(type=reset)、button(type=reset)
$(":button") // 選擇 button、input(type=button)
// 表單對象選擇器
$(":disabled") // 選擇不可用元素
$(":enabled") // 選擇可用元素
$(":checked") // 選擇 radio、checkbox 被選中的元素
$(":selected") // 選擇下拉列表被選中的元素
複製代碼
屬性操做
attr(attrName[,attrValue]) // 操做全部屬性,包括自定義屬性
prop(attrName[,attrValue]) //操做符合規範的屬性
removeAttr((attrName) // 刪除屬性
removeProp((attrName) // 刪除經過 prop() 添加的屬性
attr("class",value) // 屬性設置
hasClass(className) // 判斷是否有相應 class
addClass(className) // 添加 class
removeClass(className) // 移除 class
toggleClass(className) // 該 class 存在就移除,沒有就添加
複製代碼
for example
<img id="img-item" src="" testAttr="str"></img>
<script src="/lib/jQuery-3.4.1.js"></script>
<script type="text/javascript"> // 獲取屬性 $("#img-item").attr("src"); // 獲取 src $("#img-item").prop("src"); // 獲取 src $("#img-item").attr("testAttr"); // 獲取 testAttr $("#img-item").prop("testAttr");// 獲取不到不符合規範的屬性,undefined // 設置屬性 $("#img-item").attr("src", "..."); // 設置 src $("#img-item").prop("src", "..."); // 設置 src </script>
複製代碼
樣式操做
// css
css("background-color","#ccc") // 設置或獲取 css 屬性
css({"width":"400px","height":"200px"}) // 一次設置多個 css 屬性
// 位置
offset() // 獲取或設置元素在文檔中的座標 (top,left)
position() // 元素在定位的祖先元素中的座標 (top,left)
srollTop() // 獲取或設置 Y 滾動條位置
scrollLeft() // 獲取或設置 X 滾動條位置
// 尺寸
width(),height() // 設置或獲取內容尺寸
innerWidth(),innerHeight() // 設置或獲取 內容尺寸與 padding 的和
outerWidth(),outHeight() //設置或獲取盒子尺寸
複製代碼
文本操做
html([str]) // 設置或獲取 html 代碼,innerHTML
text([str]) // 設置或獲取文本內容,innerText
val([str]) // 獲取或設置文本框、文本域,至關於 attr("value")
複製代碼
過濾
// jq dom object function
$("ul li").first() // 返回第一個 jq dom object
$("ul li").last() // 返回最後一個 jq dom object
$("ul li").eq(i) // 返回第 i 個 jq dom object
$("ul li").not(".itme") // 排除知足 class = item 的對象後,返回集合
$("ul li").filter(".item") // 返回知足 class = item 條件的對象集合
$("ul li").slice(a[,b]) // 返回 a 到最後一個元素或 a 到 b(左閉右開)的對象集合
$("ul li").has('.item') // 返回有 class 爲 item 的子元素的對象集合
複製代碼
查找
$("ul").children([selector]) // 選取知足條件的子元素
$("ul").find("li") // 選取知足條件的後代元素
$("ul").parent([selector]) // 選取知足條件的父元素
$("ul").parents([selector]) // 選取知足條件的祖先元素
$("ul").parentsUntil([selector]) // 選取全部祖先元素直到 selector(不包括 selector)
$("ul").offsetParent() // 選取第一個定位的祖先元素,沒有則選中 html 標籤
$(".item").next([selector]) // 選取知足條件的後一個兄弟元素
$(".item").nextAll([selector]) // 選取知足條件的後面全部兄弟元素
$(".item").nextUntil([selector]) // 選取後面全部兄弟元素直到 selector(不包括 selector)
$(".item").prev([selector]) // 選取知足條件的前一個兄弟元素
$(".item").prevAll([selector]) // 選取知足條件的前面全部兄弟元素
$(".item").prevUntil([selector]) // 選取前面全部兄弟元素直到 selector(不包括 selector)
$(".item").siblings([selector]) // 選取全部兄弟元素
複製代碼
串聯
$("ul").find("li").add("p") // 將選中元素加入到當前對象集合
$("ul").find("li").addBack("p") // 將調用者加入當前對象集合
$("ul").find("li"),end() // 返回最後一次破壞性操做以前的集合
複製代碼
遍歷
$("ul li").each(function(index,ele){
// 對序號 index 和 元素對象 ele 進行處理
})
$("ul li").map(function(index,ele){
// 對序號 index 和 元素對象 ele 進行處理
// 併產生新的集合
return $(ele).html();
})
$("ul li").length // 返回集合元素個數
$("ul li").index() // 返回元素在兄弟元素中的索引
$("ul li").get([i]) // 返回集合中對應索引的原生 dom 對象,不給參數則返回原生對象數組
$("ul li").eq(i) // 返回集合中對應索引的 jquery dom 對象
複製代碼
建立
var $img = $("<img src='...'>") // 建立 img 標籤元素
複製代碼
插入
// 成爲子元素最後一個
$("#box").append($img)
$("#box").append("<img src='...' />")
$("<img>").appendTo("#box")
// 成爲子元素的第一個
$("#box").prepend($img)
$("#box").prepend("<img src='...' />")
$("<img>").prependTo("#box")
// 成爲後一個兄弟元素
$("#box").after($img)
$("<img>").insertAfter("#box")
// 成爲前一個兄弟元素
$("#box").before($img)
$("<img>").insertbefore("#box")
複製代碼
包裹
$("#box img").warp("<li>") // 每一個 img 都被 li 包裹
$("#box img").warpAll("<li>") // 使用一個 li 包裹 img
$("#box").warpInner("<li>") // 用 li 包裹全部子元素
$("#box img").unwarp(); // 去掉 img 的父元素
複製代碼
替換
$("#item").replaceWith($("<img src='...' />"))
$("<img src='...' />").replaceAll("#item")
複製代碼
刪除
$("#box").empty() // 清空全部內容
$("#box").remove() // 刪除調用者
$("#box").detach() // 刪除調用者
// 將 romove() 和 detach() 返回值從新 append 到指定位置,能夠實現恢復
// 區別是 detach() 保留事件,remove() 不保留
複製代碼
克隆
$("#box").clone() // 返回完整複製的 jq dom object
複製代碼
事件綁定
// 事件名方法 支持鏈式操做
$("#btn").click(function(){})
$("#btn").mouseover(function(){}).mouseout(function(){})
// on 方法 能夠用 {} 綁定多個事件
$("#btn").on("click",function(){})
// one 方法 只會綁定一次,觸發後失效
$("#btn").one("dblclick"function(){})
// 解除事件
$("#btn").off("click") // 不指定事件名則解除所有事件
複製代碼
事件委派
// jquery 中許多事件委派方法都被棄用了,能夠使用 on() 代替
$("#box").on("click","li",function(){})
// 給 div#box 中的每個 li 添加 click 方法,包括新 append 進去的 li
複製代碼
事件對象
$("#box").on("click",function(event){
console.log(event.type); // 事件名稱
console.log(event.pageX); // 鼠標在文檔橫座標
console.log(event.pageY); // 鼠標在文檔衆座標
console.log(event.target) // 觸發事件的元素
console.log(event.which) // 按下鍵盤的 ascii 碼
event.prevent(); // 阻止默認操做,如 a 標籤的 href
event.stopPropagation(); // 阻止事件冒泡,即不會觸發父級元素的事件
// return false 既能夠阻止事件冒泡,又能夠阻止默認操做
})
複製代碼
基本效果
// 變化:透明度、大小相關的屬性、外邊距
// 參數:speed:normal,fast,slow 或數值(毫秒數)|| callback:回調方法
hide(); // 顯示
show(); // 隱藏
toggle(); // 顯示和隱藏切換
複製代碼
滑動
// 變化:垂直方向上的屬性
// 參數:speed || callback
slideUp(); // 展開
slideDown(); // 收起
slideToggle(); // 展開和收起切換
複製代碼
淡出淡入
// 變化:透明度
// 參數:speed || callback
fadeIn(); // 淡入
fadeOut(); // 淡出
fadeToggle(); // 狀態切換
複製代碼
自定義動畫
// 參數:{} || speed || caback
animate({"width":500,"padding":20},3000,function(){
// callback...
})
複製代碼
get/post 方法
// get 請求 數據包含在 url
$.get(url,function(){
// callback...
},dataType)
// post 請求 不指定 data 則不傳遞數據
// data 格式:{name:"Jett",password:"1234"} || name=Jett&&password=1234
$.post(url,data,function(){
// callback...
},dataType)
複製代碼
ajax 方法
$.ajax({
url:"...",
type:"get",
asny:true,
dataType:"json" // 指定爲 json,會自動轉換成 js object
data:{name:"Jett",password:"1234"} // 或 "name=Jett&&password:1234"
success:function(){
// callback...
}
error:function(){
// callback
}
})
複製代碼
serialize()
$("#myForm").serilaze()
// 返回 form 中 指定 name 的控件內容組成的字符串
複製代碼
數組
// $.each():遍歷數組和類數組
var list = [1,2,3,4];
$.each(,funtion(index,item){
console.log(index,item);
})
// $.map:操做數組和類數組,返回新的集合
list = $.map(,funtion(index,item){
return item + 1; // 將 list 每一個元素 +1
})
複製代碼
函數
// 至關於原生 js bind() 方法
function test(){
// this -> window
}
$.proxy(test,{name:"Jett"}); //將 test 函數內部 this 指向 {name:"Jett"} 對象
複製代碼
判斷
$.type(); // 返回類型
$.isFunction(); // 是不是方法
$.isWindow(); // 是不是 window 對象
$.isNumberic(); // 是不是數字(不必定是數字類型,NaN 返回 false)
複製代碼
字符串
$.trim(); // 去掉字符串兩邊空格$.param({name:"Jett",age:"22"}); // 對象 -> 字符串 name=Jett&&age=22
複製代碼