jQuery基礎知識總結
阿新 • • 發佈:2018-12-26
1、什麼是JQuery?
它是js的一個框架,它是開源的專案。對底層的js進行封裝,我們通過js框架就可以快速的完成DOM
對元素的增刪改查操作,並提供了動畫功能。jquery對外提供api讓開發者去開發jquery
外掛(就是一個功能模組,使用者只要做一些簡單的配置就完成複雜的功能)。jquery目前
是比較流行的一個JQuery框架。(宗旨:寫得少,做的多)。
2、JQuery特點:
輕量級
強大的選擇器
出色的DOM封裝
可靠的事件處理機制
完善的Ajax
出色的瀏覽器相容性
豐富的外掛支援
完善的文件
支援鏈式操作
3、JQuery的環境配置
1)官網:http://www.jquery.com
2)去下載jquery庫檔案:
通常有兩個版本:
*未壓縮版本:--用在開發和除錯。(我們下載此版本)
*壓縮版本:--產品釋出的時候使用,可以提高效能和減少頻寬
4、在html頁面中如何使用jQuery?
使用<script src="jquery.js" type="text/javascript"></script>引入
5、在<script></script>內編寫jquery指令碼
/*當文件解析完畢好以後去執行一個函式*/
/* jQuery(document).ready(function(){
alert("hello,jQuery");
});*/
/* $(document).ready(function(){
alert("hello,jQuery");
})*/
$(function(){
alert("hello,jQuery");
})
注意:jQuery可以使用$符號作為別名。
強調:和window.onload=function(){}區別?
*載入時機不同,$(function(){})優先於window.onload=function(){}先執行
*執行的次數不同,window.onload=function(){}只會執行最後一個繫結的函式。
$(function(){})可以繫結多個函式來分別執行。
6、JQuery物件和DOM物件之間的關係,他們之間如何去轉換?
*使用DOM方法來查詢得到的結果是DOM物件,它只能訪問DOM物件中所提供的屬性和方法。
*使用JQuery查詢得到的結果是Jquery物件,它只能訪問jQuery物件中所提供的屬性和方法。
也就是說JQuery物件不能呼叫DOM物件的屬性和方法,反之也一樣。
注意:養成一個良好的書寫習慣,JQuery物件的變數名最好以$開頭。
記住:JQuery查詢出來的結果是一個物件陣列,就算根據id來進行查詢就是返回的是一個物件陣列。
陣列記憶體放的是DOM物件。
*JQuery物件轉換成DOM物件,通過[下標]就可以轉,或者get(下標)方法來取出資料就是DOM物件
*DOM物件轉換成JQuery物件,通過$()工廠函式就可以了,把DOM物件作為引數傳給$()函式,那麼
就把DOM物件轉換成了JQuery物件。
-------------------------------------------------------------------------------------------
選擇器的學習 :
*回顧下CSS選擇器:---css選擇器的作用是給指定的元素設定樣式的。
1)id選擇器 #id名{樣式規則} id="id名"
2)類選擇器 .類名{樣式規則} class="類名1 類名2 ....."
3)標籤選擇器 標籤名{樣式規則}
4)後代選擇器 選擇器1 選擇器2{樣式規則}
5)子元素選擇器 選擇器1>選擇器2{樣式規則}
6)相鄰選擇器 選擇器1+選擇器2{樣式規則}
7)同輩選擇器 選擇器1~選擇器2{樣式規則}
8)屬性選擇器
[屬性名='值']
[屬性名^='值']
[屬性名$='值']
[屬性名|='en'] 比如:<input type="en-aa">
[屬性名*='en']
[屬性名~='en'] 比如:<input type="en aa">
jQuery選擇器:--Jquery選擇器的作用是給指定的元素設定行為的。它提供了css1,css2
css3部分的選擇器,還包含自身特有的一些選擇器。功能比較強大。
選擇器效率的問題
1)$("#id")
2)$("#id").find("");
3)$("p")
4)$(".className")
5)$("#id :hidden")
1)常用的基本選擇器
#id:根據給定的id匹配一個元素*****
.classname:根據給定的類名匹配一個元素*****
classname:根據給定的元素名匹配元素*****
*:匹配所有元素
select1,select2…:將每一個匹配到的元素合併後一起返回
2)層次選擇器*****
ancestor descendant:選取ancestor元素裡的所有descendant元素--對應的方法find()
parent>child:獲取parent元素下的child元素---對應的方法children()
prev+next:選取緊接在prev元素後的next元素---對應的next()方法
prev~siblings:選取prev元素之後的所有siblings元素--對應的nextAll()方法
例項:
//獲取所有的input元素
//alert($("#divTest input").length);
//alert($("#divTest").find("input").length);
//獲取id為divTest的元素下的input子元素
//alert($("#divTest>input").length);
//alert($("#divTest").children("input").length);
//獲取id為next元素的下一個input元素的內容
//alert($("#next+input").val());
//alert($("#next").next("input").val());
//獲取id為next元素的前後所有同輩a元素的個數
// alert($("#next~span").length);
alert($("#next").siblings("span").length);
3)基本過濾選擇器
:first:根據給定的id匹配一個元素==first()
:last:根據給定的類名匹配一個元素---last()
:not(selector):去除所有與給定選擇器匹配的元素
:even:選取索引值為偶數的所有元素,從0開始計數*****
:odd:選取索引值為奇數的所有元素,從0開始計數*****
:eq(index):匹配一個給定索引值元素,從0開始*****
:gt(index):匹配大於給定索引值元素,從0開始
:lt(index):匹配小於給定索引值元素,從0開始
:header:選擇h1,h2,h3一類的標籤
:animated:匹配正執行動畫效果的元素
:focus:匹配獲取焦點的元素
4)常用的內容過濾選擇器
:contains(text):匹配包含給定文字的元素
:empty:匹配所有不包含子元素或者文字的空元素
:has(selector):匹配含有選擇器所匹配元素的元素*****
:parent:選取含有子元素或者文字的元素
//查詢空元素的個數
//alert($("li:empty").length);
//查詢內容包含ip的li元素的個數
//alert($("li:contains('ip')").length);
//查詢擁有子元素的所有li元素,輸出滿足條件的元素個數
// alert($("li:parent").length);
//查詢並輸出包含a元素的li元素的內容
//alert($("li:has('a')").text());
5)常用的可見性過濾選擇器*****
:hidden:選取所有不可見的元素 <input type="hidden"> display:none
:visible:選取所有可見的元素
6)常用的屬性過濾選擇器
元素名[attribute]:選取擁有此屬性的元素
元素名[attribute=value]:選取屬性值等於value的元素
元素名[attribute!=value]:選取屬性值不等於value的元素
元素名[attribute^=value]:選取屬性值以value開始的元素
元素名[attribute$=value]:選取屬性值以value結束的元素
元素名[attribute*=value]:選取屬性值包含value的元素
元素名[attribute|=value]:選取屬性值是value的元素或以value開頭,後面跟-
元素名[attribute~=value]:選取屬性值包含value且以空格隔開的元素
元素名[attribute1][attribute2]…:多個屬性選擇器合併成一個複合屬性選擇器
7):常用的子元素過濾選擇器
:first-child:選取每個父元素下的第一個子元素
:first-of-type:選取同名兄妹節點的第一個子元素的所有元素
:last-child:選取每個父元素下的最後一個子元素
:last-of-type:選取同名兄妹節點的最後一個子元素的所有元素
:only-child:選取父元素中具有唯一的子元素的所有元素
:only-of-type:選取前後沒有同名兄妹節點的子元素的所有元素
:nth-child(index/even/odd):選取每個父元素下的第index個子元素或奇偶元素(index從1開始算起)
:nth-last-child(index/even/odd):取每個父元素下的第index個子元素,從最後一個往第一個數(index從1開始算起)
8):常用的表單選擇器
:input:選取所有<input>、<textarea>、<select>和<button>元素(表單元素)
:text:選取所有單行文字框
:password:選取所有密碼框
:radio:選取所有單選按鈕
:checkbox:選取所有複選框
:submit:選取所有提交按鈕
:image:選取所有影象按鈕
:reset:選取所有重置按鈕
:button:選取所有按鈕
:file:選取所有上傳域
9)常用的表單物件屬性過過濾選擇器
:disabled:選取所有不可用元素
:enabled:選取所有可用元素
:checeked:選取所有被選中的元素(單選框和複選框)
:selected:選取所有被選中的選項元素(下拉列表)
jQuery繫結事件
$("#title").click(function(){
if($("#content").is(':hidden')) {
$("#content").slideDown(1000);
}else{
$("#content").slideUp(1000);
}
});
先學習四個動畫函式
show(時間)---即改變透明度,高度、寬度
hide(時間)---即改變透明度,高度、寬度
slideDown(時間)--只改變元素的高度
slideUp(時間)--只改變元素的高度
判斷元素是否隱藏條件?
if($("#content").is(':hidden')){
}
層次選擇器所對應的方法*****
next([元素])--找下一個同輩元素
pre([元素])--找上一個同輩元素
nextAll([元素])--找後面的所有同輩元素
preAll([元素])--找前面的所有同輩元素
siblings([元素])--找前後所有的同輩元素
text()---獲取文字
html()--獲取文字
val()--獲取value屬性值
length--長度
find([元素])--查詢後代元素 對應的另一種寫法 $("ol", this)--從this(元素)中去查詢後代ol元素
focus()--讓元素獲得焦點
parent()--獲得父元素
parents()--獲取父輩元素
addClass(類名)--給元素新增類選擇器
//改tab選項卡的功能,能用jquery儘量使用jquery來實現?
//
------------------------------------------------------------------------------------
*常用管理選擇器所得到結果的方法*****
1.index()--獲取指定元素在查詢結果中的下標。
2.add()--在集合中新增元素
3.not()--在集合中刪除元素
4.filter(匹配的條件/匹配的函式)--篩選集合中的元素--把符合條件的元素取出來生成一個新的陣列。
5.find()--對應的另一種寫法 $("ol", this)--從this(元素)中去查詢後代ol元素
6.each()--遍歷集合
7.end()--回到上一個操作物件
8.addBack()--結果集中加入上一個操作物件
*建立並插入元素節點:通過$(標籤的書寫規範)函式
append() 向每個匹配的元素內部追加內容*****
appendTo() 將所有匹配的元素追加到指定的元素中
prepend() 向每個匹配的元素內部前置內容
prependTo() 將所有匹配的元素前置到指定的元素中
after() 在每個匹配的元素之後插入內容
insertAfter() 將所有匹配的元素插入到指定元素的後面
before() 在每個匹配的元素之前插入內容
insertBefore() 將所有匹配的元素插入到指定元素的前面
*刪除元素
1、remove():對元素進行刪除,返回刪除的那個元素事件不可用
2、detach():對元素進行刪除,返回刪除的那個元素事件可用
3、empty():對元素進行後代元素的清除,返回沒有後代元素的空元素,元素繫結的事件還是存在的。
*包裹元素
1)wrap()
2)wrapAll()
3)wrapInner()
*對元素屬性的操作*****
1)attr(“屬性名字”)--獲取屬性對應的值
2)attr("屬性名","屬性值")--設定一個屬性所對應的值
3)attr({"屬性名":"值","屬性名":"值",......})--設定多個屬性值
*給元素新增類選擇器*****
1)addClass("選擇器1 選擇器2");//新增多個類選擇器
2)removeClass();刪除元素上所有的類選擇器
3)removeClass("類選擇器名");刪除元素上指定的選擇器
4)hasClass("類選擇器名");使用類選擇器返回true,否則返回false
5)toggleClass("類選擇器名");根據元素是否使用這個類選擇器來進行自動切換,使用的話刪除,未使用的話新增。
*獲取、設定文字的內容和值的方法
1)html()
2)text()
3)value()--它可以回去文字的value屬性值,也可以設定文字框的value屬性值
--選中下拉列表框的選項
--選中複選框
--選中單選框
*遍歷節點操作*****
1)children()--找元素中的子元素(可以指定具體要查詢的子元素)
2)next()
3)prev()
4)parent()
5)parents()
6)closest()
7)siblings()
--------------------------------------------------------------------------------
*css-DOM的操作
1)css()方法---作用,就是給標籤設定行內樣式,給標籤設定style屬性值
//$("p").css("color","red");
$("p").css({"color":"red","fontSize":"32px","backgroundColor":"#888888"});
alert($("p").css("fontSize"));
2)設定元素的寬和高
1)width()
2)height()
注意:
*有引數是設定,無引數是獲取
*獲取瀏覽器的寬和高
alert($(window).width());
alert($(window).height());
innerHeight()--包括內邊距。不包括邊框和外邊距
outerHeight()--包括內邊距,包括邊框
innerWidth()
outerWidth()
3)設定元素的滾動偏移量
scrollTop()
scrollLeft()
$(window).scroll(function(){});瀏覽器滾動事件
4)css-DOM中的定位方法
offset()--得到一個Jquery物件,裡面封裝了相對瀏覽器的偏移量(left,top屬性)
還可以設定相對瀏覽器的偏移量 offset({left:100,top:100});
position()--得到一個Jquery物件,裡面封裝了相對父元素的偏移量left,top屬性)
*事件的繫結
1)on("事件型別1 事件型別2",[{"鍵":"值"}],"處理函式");
*第一個引數,事件型別可以多個
*第二個引數,傳給處理函式的資料
*第三個引數,響應處理函式
2)off()--解除元素的繫結事件
*不帶引數,解除元素上所有的事件
*帶事件名,多個用空格隔開,解除元素上指定的事件
*帶兩個引數的,解除具有指定處理函式的事件
3)簡寫的方式*****
語法:jquery物件.事件(),比如:$show.click(function(){}).mouserover(function(){})
*常用的合成事件
1)hover(函式1,函式2)
當滑鼠移入的時候執行函式1,移出的時候執行函式2
2)toggle()--切換(隱藏的時候顯示,顯示的時候隱藏)
*事件物件
什麼是事件物件?
當一個元素觸發事件的時候,內部會生成一個事件物件,(裡面封裝了與事件相關的資訊)
此事件物件作為引數傳給處理函式。處理函式就能從事件物件中獲取相關的事件資訊
比如:通過事件物件可以阻止冒泡型事件、阻止元素的預設行為,獲得滑鼠的座標、
獲得鍵盤按鍵所對應的字元或碼值、獲得滑鼠的按鍵型別、獲得事件源、獲得事件型別
1)event.type屬性--獲取事件型別
2)event.preventDefault();--阻止元素的預設行為
3)event.stopPropagation();--阻止冒泡型事件
4)event.target---獲取事件源,返回的是DOM物件
5)event.pageX和event.pageY 獲得滑鼠的X,Y座標
6)return false,既阻止元素的預設行為,又阻止冒泡型事件
7)event.which,獲得滑鼠鍵 1,左,2中 3右
8)event.keycode
*模擬事件的操作
trigger("事件名")
可以使用簡寫的方式,比如元素.click()
----------------------------------------------------------------------------------
*jQuery動畫?
動畫就是在單位時間內去修改元素的一個或多個屬性值,也就是屬性值在單位時間內從一個
狀態到另外一個狀態。
jquery為什麼提供了一些現成的動畫方法來完成特定的效果。
show(毫秒)
hide(毫秒)
---上面兩個動畫在指定的時間內改變屬性透明度、高度、寬度。
toggle()--在show()和hide()之間進行切換,自動判斷隱藏還是顯示
fadeIn()
fadeOut()
fadeToggle()--透明邊不透明,不透明變透明
fadeTo()--指定透明度
----只改變元素的透明度
slideDown()
slideUp()
slideToggle()--收起的時候顯示,顯示的時候收起。
---改變元素的寬度和高度。
以上動畫都可以指定完成時間和一個函式,這個函式的作用就是當動畫結束後要執行的功能。
*以上提供的動畫未必能滿足我們開發中所需的所有需求,所以要學會自定義動畫。
總結:自定義動畫用animate({多個屬性的鍵值對},時間,函式);
結束動畫:stop(引數1,引數2)
引數1:清除佇列中的所有動畫 true
引數2:讓正在執行的動畫直接跳到末尾狀態 true
延遲動畫的方法
delay(時間)--時間為毫秒數