選擇器是jquery的核心 jquery選擇器返回的對(duì)象是jquery對(duì)象,不會(huì)返回undefined或者null,因此不必進(jìn)行判斷
基本選擇器: ID選擇器 $("#ID") element選擇器(標(biāo)簽選擇器)$("標(biāo)簽") 如 $("div") 獲取具體的標(biāo)簽,使用數(shù)組下標(biāo)的方式 $("div")[index] 獲取當(dāng)前元素的索引值 $(this).index() class選擇器 $(".類名") 通配符選擇器 $("*") 匹配所有元素,盡量不要用,效率比較低
多項(xiàng)選擇器: $("selector1, selector2, selector3...") 合并返回,每個(gè)選擇器之間用逗號(hào)隔開 如果不同選擇器的內(nèi)容之間有重復(fù),會(huì)自動(dòng)舍去重復(fù) 返回的數(shù)組中的順序是根據(jù)DOM中元素的順序,而不是根據(jù)選擇器的順序
層級(jí)選擇器 祖先后代選擇器: $("父元素 子孫元素") 中間用空格分開 如:獲取aside里面的summary元素 var summaries=$("aside summary");
直接后代選擇器:$("父元素>子元素") 中間用 > 如:獲取aside下面的直接子元素summary var summaries=$("aside>summary");
親密兄弟選擇器:$("兄元素+弟元素") 獲取兄元素后面緊跟的一個(gè)弟元素 如:獲取aside后面緊跟的details元素 var summaries=$("aside+details");
兄弟選擇器: $("兄元素~弟元素") 獲取兄元素后面的所有弟元素 如:獲取aside后面出現(xiàn)的所有兄弟元素details var summaries=$("aside~details");
屬性選擇器: [attribute] 包含該屬性的元素,如:$("[class]") [attribute=value] 屬性值等于指定值的元素,如:$("[class=tool]") [attribute!=value] 屬性值不等于指定的元素,如:$("[class!=tool]") [attribute^=value] 屬性值以指定元素開頭,是單詞的開頭部分,如:$("[class^=tool]") [attribute$=value] 屬性值以指定元素結(jié)束,是單詞的結(jié)束部分,如:$("[class$=tool]") [attribute*=value] 屬性值包含指定元素,可以是單詞的一部分,也可以是一個(gè)單獨(dú)的單詞,如:$("[class*=tool]") [attribute~=value] 常用于多個(gè)class的情況,只要其中一個(gè)class是指定值,是一個(gè)完整的單詞,如:$("[class~=tool'") <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <script src="jquery.js"></script> <script> $(function(){ var div1=$("[class~=one]");//取到1 console.log(div1); var div2=$("[class*=one]");//取到1和2 console.log(div2); }) </script> </head> <body> <div class="tool one">1</div> <div class="tool tool_one">2</div> </body> </html>
[selector1][selector2][selector3] 多個(gè)屬性選擇器,如:$("[type][class=tool]")
過(guò)濾器之child系列(最大特點(diǎn)必須是指定元素): ele:first-child 其父元素的第一個(gè)子元素,且剛好是指定元素 ele:last-child 其父元素的最后一個(gè)子元素,且剛好是指定元素 ele:nth-child(n | even | odd | 計(jì)算式) 其父元素的第n個(gè)子元素,且剛好是指定元素(此處下標(biāo)從1開始) ele:nth-last-child(n | even |odd | 計(jì)算式) 其父元素的倒數(shù)第n個(gè)子元素,且剛好是指定元素(此處下標(biāo)從1開始) ele:only-child 是其父元素的唯一子元素,且是指定元素
過(guò)濾器之type系列(最大特點(diǎn)計(jì)數(shù)時(shí)自動(dòng)跳過(guò)非指定元素): ele:first-of-type 其父元素的第一個(gè)指定子元素(計(jì)數(shù)時(shí)可以自動(dòng)跳過(guò)非指定元素) ele:last-of-type 其父元素的最后一個(gè)指定子元素 ele:nth-of-type(n) 其父元素的第n個(gè)指定子元素 ele:nth-last-of-type 其父元素的倒數(shù)第n個(gè)指定子元素 ele:only-of-type 其父元素的唯一指定子元素
child和type系列對(duì)比 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <script src="jquery.js"></script> <script> $(function(){ var p=$("p:only-child()");//p的父元素只有一個(gè)子元素,且是p標(biāo)簽 console.log(p); var p2=$("p:only-of-type()");//p的父元素的子元素中,只有一個(gè)p標(biāo)簽,允許有其他標(biāo)簽 console.log(p2); }) </script> </head> <body> <div> <p>p</p> <span>span</span> </div> </body> </html> 過(guò)濾器參數(shù) ele:nth-child(n) n必須為整數(shù),從1開始 ele:nth-of-type(n) ele:nth-child(even) 偶數(shù)項(xiàng) ele:nth-of-type(even) ele:nth-child(odd) 奇數(shù)項(xiàng) ele:nth-of type(odd) ele:nth-child(3n+4) 類似特殊公式 ele:nth-of-type(3n+4) 小案例: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <script src="jquery.js"></script> <script> $(function(){ $("p:nth-of-type(even)").css({"background":"#abcdef"}); $("p:nth-of-type(odd)").css({"background":"pink"}); }) </script> </head> <body> <div> <p>慕道威儀立善緣</p> <p>課童更渫墻西井</p> <p>網(wǎng)羅文獻(xiàn)吾倦矣</p> <p>恭請(qǐng)光堯壽圣來(lái)</p> <p>祝教壽比天難盡</p> <p>學(xué)畫鴉兒猶未就</p> <p>習(xí)氣若為除未盡</p> <p>愉貴神兮般以樂(lè)</p> <p>快風(fēng)涼雨火云摧</p> </div> </body> </html>
表單相關(guān)選擇器: :input 可以選擇input textarea select button <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <script src="jquery.js"></script> <script> $(function(){ $(":input").css({"background":"#abcdef"}); }) </script> </head> <body> <form> input:text<input type="text"><br> select<select> <option></option> </select><br> textarea<textarea></textarea><br> input:submit<input type="submit" value=""><br> button<button>按鈕</button> </form> </body> </html>
:text = input[type="text"] 匹配所有單行文本框 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <script src="jquery.js"></script> <script> $(function(){ $(":text").css({"background":"#abcdef"}); }) </script> </head> <body> <form> input:text<input type="text"><br> select<select> <option></option> </select><br> textarea<textarea></textarea><br> input:submit<input type="submit" value=""><br> button<button>按鈕</button> </form> </body> </html>
其他type類型也是同理,如: :password :radio :checkbox :reset :submit :image :button :file 其中發(fā)現(xiàn):submit也選中了button元素 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <script src="jquery.js"></script> <script> $(function(){ $(":password").css({"background":"#abcdef"}); $(":file").css({"background":"pink"}); $(":submit").css({"background":"orange"}); }) </script> </head> <body> <form> input:text<input type="text"><br> input:password<input type="password"><br> input:file<input type="file"><br> select<select> <option></option> </select><br> textarea<textarea></textarea><br> input:submit<input type="submit" value=""><br> button<button>按鈕</button> </form> </body> </html>
表單狀態(tài)相關(guān)選擇器: :enabled 可用元素 :disabled 不可用元素 :checked 選中元素(除了checkbox和radio中被checked元素,還有option中被selected的元素) :selected 選中option中被selected的元素
查找和過(guò)濾選擇器 .find("元素") 搜索與指定表達(dá)式匹配的元素(類似祖先后代子孫選擇器) .children("元素") 搜索與指定表達(dá)式匹配的元素(類似直接父子元素選擇器) .parent("元素") 搜索一個(gè)元素的父元素 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <script src="jquery.js"></script> <script> $(function(){ $("details").find("p").css({"background":"#abcdef"});//內(nèi)容1和內(nèi)容2 $("details").children("p").css({"color":"orange"});//內(nèi)容1 }) </script> </head> <body> <details> <summary>標(biāo)題1</summary> <p>內(nèi)容1 <div> <p>內(nèi)容2</p> </div> </p> </details> </body> </html>
.next() 緊跟在元素后面的直接兄弟元素 .prev() 緊跟在元素前面的直接兄弟元素 .eq(n) 元素返回的數(shù)組中第n個(gè)元素,下標(biāo)是從0開始的;如果n是負(fù)數(shù),就是倒數(shù) .siblings() 元素的所有同級(jí)兄弟元素(前面后面都可以,不包括元素本身),中間可以加選擇器 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <script src="jquery.js"></script> <script> $(function(){ $(".p").next().css({"background":"#abcdef"}); $(".p").prev().css({"background":"pink"}); $("p").eq(2).css({"background":"orange"}); $("p").eq(-1).css({"background":"lightgreen"}); $(".p").siblings().css({"font-style":"italic"}); $(".p").siblings("[id]").css({"font-weight":"bold"}); }) </script> </head> <body> <div> <p>1</p> <p id="p2">2</p> <p class="p">3</p> <p id="p4">4</p> <p>5</p> </div> </body> </html>
.filter(expr | object | element | fn) 參數(shù)如果用 [ ] 表示為可選參數(shù) expr 字符串值,選擇器表達(dá)式,如:filter( ".class" ) object 現(xiàn)有的jquery對(duì)象,如:filter( $(".class") ) element DOM元素,如:fliter( document.getElementById("class") ) fn 函數(shù)的返回值(index是filter方法的默認(rèn)參數(shù),表示當(dāng)前元素的索引值) expr | object | element 其實(shí)都是通過(guò)選擇器查找的意思 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <script src="jquery.js"></script> <script> $(function(){ $("p").filter(function(index){ console.log(index); }); }) </script> </head> <body> <div> <p>1</p> <p id="p2">2</p> <p class="p">3</p> <p id="p4">4</p> <p>5</p> </div> </body> </html>
filter的另一種用法: var arr=[2,5,33]; function fn(num){ return num>18;//返回大于18的元素 } var res=arr.filter(fn); console.log(res);//[33] <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <script src="jquery.js"></script> <script> $(function(){ $("div").filter(function(index){ //在當(dāng)前對(duì)象內(nèi),尋找P元素的個(gè)數(shù)為1的div return $("p",this).length===1; }).css({"background":"#abcdef"}); }) </script> </head> <body> <div> <p>文字</p> </div> <div> <p>文字</p> <p>文字</p> </div> </body> </html>
關(guān)于隱式迭代: 類似遍歷數(shù)組,使用$(this) 返回當(dāng)前觸發(fā)的元素 不再需要像js那樣循環(huán) <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <script src="jquery.js"></script> <script> $(function(){ $("p").click(function(index){ $(this).css({"background":"pink"}); }); }) </script> </head> <body> <div> <p>文字</p> <p>文字</p> </div> </body> </html>
|
|