1. 程式人生 > >Web | jQuery學習筆記

Web | jQuery學習筆記

asc 共存 led lds not str pro 傳遞 ttr

jQuery 是一個 JavaScript 函數庫,將 JS 的一些功能實現封裝成了函數,極大地簡化了 JavaScript 編程。
jQuery是 John Resig 於2006年創建的一個開源項目,jQuery集成了 JavaScript、CSS、 DOM 和 Ajax 於一體的強大功能。它可以用最少的代碼, 完成更多復雜而困難的功能。

1. 引入jQuery

1.1 jQuery版本

jQuery版本:

  • jQuery-1.x.x:兼容IE6/7/8低級瀏覽器。
  • jQuery-2.x.x:不兼容IE6/7/8。
  • jQuery-3.x.x:全面支持HTML5和CSS3。

jQuery版本分類:

  • Development version:[jquery.js] 開發版,未壓縮,用於測試和開發。
  • Production version:[jquery.min.js] 精簡版,已被壓縮。

1.2 引入jQuery

<head>
    <script type="text/javascript" src="js//jquery-1.12.4.js"></script>
</head>

2. jQuery入門

2.1 jQuery對象與DOM對象

jQuery簡化了JS編程,多數JS功能實現都被封裝成了函數,而調用這些jQuery函數必須使用jQuery對象。

jQuery對象本質是一個DOM對象數組。

// DOM對象轉jQuery對象
var $jQueryObj = $(DOMObj);
// jQuery對象轉DOM對象
var DOMObj = $jQueryObj[0];
var DOMObj = $jQueryObj.get(0);

jQuery對象命名一般以$為前綴

2.2 jQuery入口函數

第一種寫法:

$(document).ready(function(){
    jQuery代碼
});

第二種寫法:

$(function(){
    jQuery代碼
});

jQuery入口函數與JS入口函數的區別
①jQuery的入口函數只等待DOM樹加載完即執行;
②JS入口函數需要等待所有資源加載完成再執行;

2.3 jQuery基礎語法

$("選擇器").操作函數()

$():即jQuery(),本質是一個函數。

3. jQuery選擇器

jQuery選擇器:獲取元素

3.1 元素選擇器

元素選擇器 描述
* 通配符選擇器
#id id選擇器
.class 類選擇器
element 元素選擇器
s1s2 交集選擇器
s1,s2 並集選擇器
s1 s2 後代選擇器
s1 > s2 子元素選擇器

3.2 屬性選擇器

屬性選擇器 描述
[attr] 屬性選擇器
[attr=value] 屬性=值的元素
[attr!=value] 屬性!=值的元素
[attr$=value] 屬性值以value結尾的元素

3.3 過濾選擇器

位置 描述
:first 第一個元素
:last 第二個元素
:odd 所有奇數元素
:even 所有偶數元素
索引位置 描述
:eq(index) 指定索引的元素
(index從0開始)
:gt(num) 所有索引>num的元素
:lt(num) 所有索引<num的元素
標簽類型 描述
:header 所有標題元素
:animated 所有動畫元素
元素狀態 描述
:contains(text) 包含指定文本的元素
:empty 無子節點的元素
:hidden 所有隱藏的元素
:visible 所有可見的元素

3.4 表單選擇器

表單元素 描述
:input 所有<input>元素
:text 所有type="text"<input> 元素
:password 所有type="password"<input>元素
:radio 所有type="radio"<input>元素
:checkbox 所有type="checkbox"<input>元素
:submit 所有type="submit"<input>元素
:reset 所有type="reset"<input>元素
:button 所有type="button"<input>元素
:image 所有type="image"<input>元素
:file 所有type="file"<input>元素
:enable 所有激活的<input>元素
:disabled 所有禁用的<input>元素
:selected 所有被選取的<input>元素
:checked 所有被選中的<input>元素

4. jQueryDOM★

4.1 DOM 操作★

4.1.1 DOM HTML內容

1.text():設置/獲取所選元素的文本內容

$("selector").text();  // 獲取文本內容
$("selector").text("文本內容");  // 設置文本內容

2.html():設置/獲取所選元素的內容

$("selector").html();  // 獲取HTML內容
$("selector").html("HTML代碼");  //設置 HTML內容

3.val():設置/獲取表單字段的值

$("selector").val();  // 獲取表單字段的值
$("selector").val("表單字段值");  // 設置表單字段的值

4.1.2 DOM HTML屬性

1.attr()HTML屬性,只能返回string的結果

$("selector").attr("屬性名");  // 獲取HTML屬性
$("selector").attr("屬性名", "值");  // 設置HTML屬性
$("selector").attr({"屬性名":"值", "屬性名":"值"});  // 設置多個HTML屬性

2.prop()DOM屬性,如selected,disabled,checked等屬性。

$("selector").prop("屬性名");  // 獲取屬性
$("selector").prop("屬性名", "值");  // 設置屬性
$("selector").prop({"屬性名":"值", "屬性名":"值"});  // 設置多個屬性

4.1.3 DOM 插入元素

1.append():在被選元素的結尾追加內容

$("selector").append("插入內容");

2.prepend():在被選元素的開頭插入內容

$("selector").prepend("插入內容");

3.before():在被選元素之前插入內容

$("selector").before("插入內容");

4.after():在被選元素之後插入內容

$("selector").after("插入內容");

4.1.4 DOM 刪除元素

1.remove():刪除被選元素及其子元素

$("selector").remove();

2.empty():刪除被選元素的所有子元素

$("selector").empty();

4.1.5 DOM CSS類

1.addClass():向被選元素添加一個或多個樣式類

$("selector").addClass("類名");

2.removeClass():從被選元素移除一個或多個類

$("selector").removeClass("類名");

3.toggleClass():對被選元素進行類切換(本質是類的添加/刪除)

$("selector").toggleClass("類名");

4.hasClass():判斷被選元素是否存在類

$("selector").hasClass("類名");

4.1.6 DOM CSS屬性

1.css():設置或返回樣式屬性

$("selector").css("樣式屬性");       // 獲取樣式屬性值
$("selector").css("樣式屬性","值");  // 設置樣式屬性
$("selector").css({"樣式屬性":"值","樣式屬性":"值",...});  // 設置多個樣式屬性

4.1.7 DOM 元素尺寸

1.width():設置或返回元素的寬度(不包括內邊距、邊框、外邊距)

$("selector").width();

2.height():設置或返回元素的高度(不包括內邊距、邊框、外邊距)

$("selector").height();

3.innerWidth():返回元素的寬度(包括內邊距)

$("selector").innerWidth(); 

4.innerHeight():返回元素的高度(包括內邊距)

$("selector").innerHeight();

5.outerWidth():返回元素的寬度(包括內邊距、邊框)

$("selector").outerWidth();

6.outerHeight():返回元素的高度(包括內邊距、邊框)

$("selector").outerHeight();

7.outerWidth(true):返回元素的寬度(包括內邊距、邊框和外邊距)

$("selector").outerWidth(true);

8.outerHeight(true):返回元素的高度(包括內邊距、邊框和外邊距)

$("selector").outerHeight(true);

4.1.8 DOM 位置

1.scrollTop():滾動條頂部偏移量

$("selector").scrollTop();

2.scrollLeft():滾動條左邊偏移量

$("selector").scrollLeft();

4.2 DOM 遍歷★

4.2.1 向上遍歷-祖先

1.parent():返回被選元素的直接父元素

$("selector").parent("篩選選擇器");  // 直接父元素,可篩選

2.parents():返回被選元素的所有祖先元素,向上遍歷直到根<html>

$("selector").parents("篩選選擇器");  // 所有祖先元素,可篩選

3.parentsUntil():返回介於兩個給定元素之間的所有祖先元素

$("selector1").parentsUntil("selector2"); 

4.2.2 向下遍歷-後代

1.children():返回被選元素的所有直接子元素

$("selector").children("篩選選擇器");  // 返回直接子元素,可篩選

2.find():返回被選元素的所有後代元素

$("selector").find("篩選選擇器"); // 返回後代元素,可篩選

4.2.3 水平遍歷-兄弟

1.siblings():返回被選元素的所有兄弟元素

$("selector").siblings("篩選選擇器");  // 返回所有兄弟元素,可篩選

2.next():返回被選元素的下一個兄弟元素

$("selector").next("篩選選擇器");  // 返回下一個兄弟元素,可篩選

3.nextAll():返回被選元素之後的兄弟元素

$("selector").nextAll("篩選選擇器");  // 返回元素之後的兄弟元素,可篩選

4.nextUntil():返回介於兩個給定元素之間的所有兄弟元素

$("selector1").nextUntil("selector2");  // 從selector1水平向後遍歷直到selector2

5.prev():返回被選元素的上一個兄弟元素

$("selector").prev("篩選選擇器");  // 返回上一個兄弟元素,可篩選

6.prevAll():返回被選元素之前的同胞元素

$("selector").prevAll("篩選選擇器");  // 返回元素之前的兄弟元素,可篩選

7.prevUntil():返回介於兩個給定元素之間的所有同胞元素

$("selector1").prevUntil("selector2");  // 從selector1水平向前遍歷直到selector2

4.2.3 元素篩選

1.eq():返回被選元素中帶有指定索引的元素

$("selector").eq(index);  // 返回指定索引的元素

2.filter():返回匹配篩選標準的元素

$("selector").filter("篩選選擇器");  // 返回匹配篩選選擇器的元素

3.not():返回不匹配篩選標準的元素

$("selector").not("篩選選擇器");  // 返回不匹配篩選選擇器的元素

4.first():獲取第一個元素

$("selector").first();

5.last():獲取最後一個元素

$("selector").last();

5. jQuery效果

5.1 隱藏/顯示

1.show():顯示

$("selector").show(speed,callback);

2.hide():隱藏

$("selector").hide(speed,callback);

3.toggle():切換hide()/show()

$("selector").toggle(speed,callback)

speed:速度(ms),[可選參數]
callback:當前動畫 100% 完成之後執行的函數,[可選參數]

5.2 淡入/淡出-fade

1.fadeIn():淡入已隱藏的元素

$("selector").fadeIn(speed,callback);

2.fadeOut():淡出已顯示的元素

$("selector").fadeIn(speed,callback);

3.fadeToggle():切換fadeIn()和fadeOut()

$("selector").fadeToggle(speed,callback);

4.fadeTo():允許漸變為給定的不透明度

$("selector").fadeTo(speed,opacity,callback);

speed:速度(ms),[可選參數]
opacity:不透明度(0~1),[可選參數]
callback:當前動畫 100% 完成之後執行的函數,[可選參數]

5.3 滑動-slide

1.slideDown():向下滑動元素

$("selector").slideDown(speed,callback);

2.slideUp():向上滑動元素

$("selector").slideUp(speed,callback);

3.slideToggle():切換slideDown()和slideUp()

$("selector").slideToggle(speed,callback);

5.4 自定義動畫-animate

animate():自定義動畫

$("selector").animate({params},speed,callback);

params:定義形成動畫的CSS屬性,[必要參數]
speed:速度(ms),[可選參數]
callback:當前動畫 100% 完成之後執行的函數,[可選參數]

5.5 停止效果-stop

stop():在動畫或效果完成前對它們進行停止

$("selector").stop(stopAll,goToEnd);

stopAll:是否清除動畫隊列;默認false-僅停止活動的動畫,允許隊列中後面的動畫執行。
goToEnd:是否立即完成當前動畫 ;默認false。

6. jQuery事件機制

6.1 事件類型

事件句柄 描述
ready DOM載入
click 鼠標單擊
focus 元素獲得焦點
blur 元素失去焦點
mouseover 鼠標覆蓋
mouseout 鼠標移開
mouseup 鼠標點擊
mousedown 鼠標松開
scroll 窗口滾動
change 發生改變
unload 退出頁面
submit 點擊提交
keydown 某個鍵盤的鍵被按下
keypress 某個鍵盤的鍵被按下或按住
keyup 某個鍵盤的鍵被松開

6.2 事件綁定方式

1.簡單事件綁定

$("selector").事件(handler);

一次只能綁定一個事件

2.bind():事件綁定

$("selector").bind("events"[,data],handler);

bind()不支持動態綁定。

3.delegate():事件委托

$("selector").delegate("childSelector","events"[,data],handler);

通過委托父元素可以動態為當前或未來子元素綁定事件;

4.on():統一事件綁定方式,推薦使用

$("selector").on("events"[,"childSelector"][,data],handler)

events:事件,多個事件以空格分隔
childSelector:後代元素,[可選]
data:傳遞給handler的數據,事件觸發後通過event.data調用,[可選]
handler:事件處理函數

6.3 事件移除方式

1.unbind():移除被選元素的事件

$("selector").unbind("events",handler);

2.undelegate():移除由delegate()添加的事件

$("selector").undelegate("selector","events",handler); 

events:規定需要刪除處理函數的一個或多個事件類型 ,[可選]
selector:規定需要刪除事件的選擇器 ,[可選]
handler:規定要刪除的具體事件處理函數 ,[可選]

3.off():解除事件綁定,推薦使用

$("selector").off("events"[,"selector"][,handler],map);

events:規定需要刪除處理函數的一個或多個事件類型 ,[可選]
selector:規定需要刪除事件的選擇器 ,[可選]
handler:規定要刪除的具體事件處理函數 ,[可選]
map:規定事件映射 ({event:function, event:function, ...}) ,包含要添加到元素的一個或多個事件,以及當事件發生時運行的函數。

7. jQuery雜項(難點)

7.1 鏈式編程

鏈式編程:使用一個jQuery對象不斷地調用(點調用)函數。栗子如下:

$("div").addClass("highlight").children("a").show().end().siblings().removeClass("highlight").children("a").hide();

非篩選函數:函數返回當前jQuery對象,jQuery對象不發生改變,如addClass(),hide()...
篩選函數:函數返回新的jQuery對象,如find(),parent()...

鏈式編程原理:jQuery的非篩選函數都返回其本身

return this

end():結束當前鏈條中的最近的篩選操作,並將匹配元素集還原為之前的狀態

jQueryObj.end()

鏈式編程本質★
jQuery對象(即包裝後的DOM對象)
①調用篩選/遍歷函數後返回新的jQuery對象,將新的jQuery對象壓入棧內;
②調用非篩選/遍歷函數後返回本身(return this)。
③調用end()將棧頂元素 (當前jQuery對象) 彈出棧,指向新的棧頂元素 (最近上一次的jQuery對象)。

7.2 隱式叠代

隱式叠代:jQuery對象本質是DOM對象數組,即$("selector")返回一個對象數組。jQuery會自動對匹配到的DOM數組進行循環遍歷,執行所調用的函數。

設置操作:隱式叠代,循環遍歷DOM對象數組執行設置函數。

獲取操作:大部分情況下返回第一個元素的值。

7.3 each方法

each():為每個匹配元素規定運行的函數

$("selector").each(function(index,element));

function():為每個匹配元素規定運行的函數,[必要參數]
index:選擇器的index位置
element:當前的元素

7.4 多庫共存

jQuery使用$標識符作為jQuery的簡寫符號 ,如果頁面上同時存在其他JS庫正在使用相同的簡寫符號$怎麽辦呢?

noConflict():釋放$標識符的控制

var a = $.noConflict();  // 釋放$的控制權,將$的能力賦予a。

Web | jQuery學習筆記