jQuery是一個輕量級的、兼容多瀏覽器的JavaScript庫,能極大的簡化JavaScript編程,內部封裝了原生的js代碼,給你提供了更加簡單快捷的操做書寫js的語法,是一個框架jQuery框架優勢相似於ORMcss
前端的模塊叫 「類庫」html
jQuery版本:1.x:兼容IE678,使用最普遍不更新了,只作bug維護前端
2.x:不兼容IE678,不多人使用,只作bug維護,不更新python
3.x :不兼容IE678,只支持最新的瀏覽器,主要更新維護的jquery
$(選擇器).action(屬性值)編程
使用jQuery,必需要先經過script標籤引入jQuery代碼才能使用數組
python配置默認添加引入jQuery瀏覽器
一、下載jQuery代碼到本地每次用需引用網絡
二、使用BootCDN內容分發網絡裏的jQuery連接引入(CDN:內容分發網絡)app
jQuery() <===> $()
jQuery查找到的都是jQuery對象(一個個的數組)
基本選擇器
id選擇器:$('#id')
標籤選擇器:$("標籤名")
class選擇器:$(".類名")
配合使用:$("div.c1") - 查找類c1屬性的全部div標籤
通用選擇器:$("*")
組合選擇器:$("#id, .className,標籤名")
層級選擇器
$("x y"); // x的全部後代y(子子孫孫) $("x > y"); // x的全部兒子y(兒子) $("x + y"); // 找到全部緊挨在x後面的y $("x ~ y"); // x以後全部的兄弟y
基本篩選器
:first // 第一個 :last // 最後一個 :eq(index)// 索引等於index的那個元素 :even // 匹配全部索引值爲偶數的元素,從 0 開始計數 :odd // 匹配全部索引值爲奇數的元素,從 0 開始計數 :gt(index)// 匹配全部大於給定索引值的元素 :lt(index)// 匹配全部小於給定索引值的元素 :not(元素選擇器)// 移除全部知足not條件的標籤 :has(元素選擇器)// 選取全部包含一個或多個標籤在其內的標籤(指的是從後代元素找)
例:
$("div:has(h1)")// 找到全部後代中有h1標籤的div標籤 $("div:has(.c1)")// 找到全部後代中有c1樣式類的div標籤 $("li:not(.c1)")// 找到全部不包含c1樣式類的li標籤 $("li:not(:has(a))")// 找到全部後代中不含a標籤的li標籤
屬性選擇器
// 示例 <input type="text"> <input type="password"> <input type="checkbox"> $("input[type='checkbox']");// 取到checkbox類型的input標籤 $("input[type!='text']");// 取到類型不是text的input標籤
表單選擇器
對默認屬性進行簡寫
:text
:password
:file
:radio
:checkbox
:submit
:reset
:button
注意:對於表單對象屬性,若是用 :checked默認會將具備selected屬性和option標籤也找到能夠手動加一個限制條件,用 :selected不會找到checked屬性的input標籤
jQuery對象是經過jQuery包裝DOM對象產生的對象,JQuery對象是jQuery獨有的,不能跟js對象混用,js對象只能用js的方法不能調用jQuery方法,反之亦是
能夠經過jQuery對象轉成js對象,或者js對象轉成jQuery對象
下一個元素:
$("#id").next() //同級別下一個元素 $("#id").nextAll() //同級別下全部的 $("#id").nextUntil("#d2") //同級別下找到直到id爲d2的標籤結束,不包括d2的標籤
上一個元素:
$("#id").prev() //同級別前面一個元素 $("#id").prevAll() // 同級別上面全部的 $("#id").prevUntil("#d2") // 同級別上面全部的直到d2標籤,不包括
父親元素:
$("#id").parent() $("#id").parents() // 查找當前元素的全部的父輩元素 $("#id").parentsUntil() // 查找當前元素的全部的父輩元素,直到遇到匹配的那個元素爲止,不包括。
兒子和兄弟元素:
$("#id").children(); // 全部的兒子們 $("#id").siblings(); // 全部的兄弟們,全部的同級別的
查找:能夠用.find("某個元素"),將篩選器封裝成方法
$("div").find("p") <===> $("div p") // 都是查找div下面的p標籤 .first() // 獲取匹配的第一個元素 .last() // 獲取匹配的最後一個元素 .not() // 從匹配元素的集合中刪除與指定表達式匹配的元素 .has() // 保留包含特定後代的元素,去掉那些不含有指定後代的元素。 .eq() // 索引值等於指定值的元素
樣式操做
addClass(); // 添加指定的CSS類名 removeClass(); // 移除指定的CSS類名 hasClass(); // 判斷樣式存不存在 toggleClass(); // 切換類名,有則移除,無則添加
位置操做
offset() // 獲取匹配元素在當前窗口的相對偏移或設置元素的位置 position() // 獲取匹配元素相對父元素的偏移 scrollTop() // 獲取匹配元素相對滾動條頂部距離,能夠加值設置滾動條位置 $(windown).scrollTop(0); // 回到頂部 scrollLeft() // 獲取匹配元素相對滾動條左邊的偏移
獲取尺寸
height() width() // 獲取文本高寬 innerHeight() innerWidth() // 獲取文本+padding高寬 outerHeight() outWidth() // 獲取文本+padding+border高寬
文本操做
$('p').text() // 獲取全部的文本內容 $('p').text(val) // 設置文本內容 $('p').html() // 獲取全部的文本+標籤內容 $('p').html(val) // 設置文本內容,識別HTML代碼
注意獲取文件內容須要轉換成js方式獲取
$(":file")[0].files[0]
屬性操做
.attr(屬性名) // 經過屬性名獲取屬性值 .attr(屬性名,屬性值) // 設置屬性 .attr({屬性名:屬性值,屬性名:屬性值}) // 設置多個屬性 removeAttr(屬性名) // 刪除某一個屬性
注意:針對選擇框 不要用attr來獲取selected和radio屬性,推薦使用prop,獲取到的是一個布爾值,能夠動態修改
文檔處理
添加到指定元素內部的後面
$(A).append(B) // 把B追加到A $(A).appendTo(B) // 把A追加到B
添加到指定元素內部的前面
$(A).prepend(B) // 把B前置到A $(A).prependTo(B) // 把A前置到B
添加到指定元素外部的後面
$(A).after(B) // 把B放到A的後面 $(A).insertAfter(B) // 把A放到B的後面
添加到指定元素外部的前面
$(A).before(B) // 把B放到A的前面 $(A).insertBefore(B) // 把A放到B的前面
移除和清空元素
remove() // 移除指定的標籤 empty() // 晴空全部
替換
replaceWith() // 替換內部先清空後替換成指定的 replaceAll()
克隆
clone() // 參數
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <meta http-equiv="x-ua-compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>克隆</title> <style> #b1 { background-color: deeppink; padding: 5px; color: white; margin: 5px; } #b2 { background-color: dodgerblue; padding: 5px; color: white; margin: 5px; } </style> </head> <body> <button id="b1">屠龍寶刀,點擊就送</button> <hr> <button id="b2">屠龍寶刀,點擊就送</button> <script src="jquery-3.2.1.min.js"></script> <script> // clone方法不加參數true,克隆標籤但不克隆標籤帶的事件 $("#b1").on("click", function () { $(this).clone().insertAfter(this); }); // clone方法加參數true,克隆標籤而且克隆標籤帶的事件 $("#b2").on("click", function () { $(this).clone(true).insertAfter(this); }); </script> </body> </html>
click(function(){...}) hover(function(){...}) blur(function(){...}) focus(function(){...}) change(function(){...}) keyup(function(){...})
一、$(選擇器).事件名(function(){})
$('button').click(function(){點擊button按鈕觸發的事件代碼})
二、$(選擇器).on("事件名",function(){})
$('button').on('click',function(){點擊button按鈕觸發的事件代碼})
儘可能保證頁面內容加載完畢後再加載js代碼,因此將jQuery代碼寫在body最後
實時獲取input框內部用戶輸入,input事件
$('input').on('input',function(){$(this).val})
.off(事件名,[選擇器][function(){}])
一、在js代碼最後加上 return false 該對象的後續事件就不會再觸發了
二、利用內置參數在function函數中加e,在最後加上e.preventDefault()
$('#d1').click(function (e) { $('span').text('你好啊'); // 阻止標籤後續事件的運行 // return false e.preventDefault()} //
事件冒泡:子標籤綁定事件會影響父標籤也會綁定該事件
解決措施:在function中加e,最後加 e.stopPropagation()
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script> </head> <body> <div>div <p>p <span>span</span> </p> </div> <script> $('div').click(function (e) { alert('我是div') }); $('p').click(function (e) { alert('我是p'); e.stopPropagation() }); $('span').on('click',function (e) { alert('我是span'); // e.stopPropagation() // 阻止事件冒泡 }); </script> </body> </html>
利用事件冒泡的原理,父標籤去捕捉子標籤的事件,將指定的某一區域內容都能觸發相應 的事件
// 表格中每一行的編輯和刪除按鈕都能觸發相應的事件。 $("table").on("click", ".delete", function () { // 刪除按鈕綁定的事件 }) // 事件委託 將body內全部的點擊事件 委託給button按鈕 $('body').on('click','button',function () { alert('放假了') })
onload 等待什麼加載完畢以後再執行
// 基本 show([s,[e],[fn]]) hide([s,[e],[fn]]) toggle([s],[e],[fn]) // 滑動 slideDown([s],[e],[fn]) slideUp([s,[e],[fn]]) slideToggle([s],[e],[fn]) // 淡入淡出 fadeIn([s],[e],[fn]) fadeOut([s],[e],[fn]) fadeTo([[s],o,[e],[fn]]) fadeToggle([s,[e],[fn]]) // 自定義(瞭解便可) animate(p,[s],[e],[fn])
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <meta http-equiv="x-ua-compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>點贊動畫示例</title> <style> div { position: relative; display: inline-block; } div>i { display: inline-block; color: red; position: absolute; right: -16px; top: -5px; opacity: 1; } </style> </head> <body> <div id="d1">點贊</div> <script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script> <script> $("#d1").on("click", function () { var newI = document.createElement("i"); newI.innerText = "+1"; $(this).append(newI); $(this).children("i").animate({ opacity: 0 }, 1000) }) </script> </body> </html>
each
一個通用的迭代函數,她能夠用來無縫的迭代對象和數組
一、$.each(可迭代對象,function(index,obj){})
二、$('div').each(function(index,obj){})
data
可以讓標籤幫你存儲一些值
$('div').data('username') // 獲取div標籤中的username $('div').data('username','Mr沈') // 給全部的div加上一個屬性名 $('div').removeData('username') // 移除div標籤的全部username屬性