jQuery 選擇器使用方法
- 2020 年 3 月 8 日
- 筆記
id選擇器(指定id元素)
將 id="divOne"
的元素背景色設置為紅色。(id選擇器返單個元素)
$('#divOne').css('background', 'red');
class選擇器(遍歷css類元素)
將 class="divTwo"
的元素背景色設為藍色
$('.divTwo').css('background', 'blue');
element選擇器(遍歷html元素)
將p元素的文字設置為粉色
$('p').css('color', 'pink');
* 選擇器(遍歷所有元素)
將ul下的所有元素字體設置成黃色
$('ul *').css('color', 'yellow');
並列選擇器
將 id = spanOne
或 class = 'pTwo'
的字體設置成藍色
$('#spanOne,.pTwo').css('color', 'blue');
示例程式碼整體效果如下:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script> </head> <body> <div id="divOne" style="height: 100px; width: 100px;"></div> <div class="divTwo" style="height: 100px; width: 100px;"></div> <p>element選擇器(遍歷html元素)</p> <p>將p元素的文字設置為粉色</p> <ul> <li>One</li> <li>Two</li> <li>Three</li> </ul> <p id="spanOne"> spanOne </p> <p class="pTwo"> pTwo </p> <p id="spanOne" class="pTwo"> spanOne And pTwo</p> </body> <script> $('#divOne').css('background', 'red'); $('.divTwo').css('background', 'blue'); $('p').css('color', 'pink'); $('ul *').css('color', 'yellow'); $('#spanOne,.pTwo').css('color', 'blue'); </script> </html>
parent > child(直系子元素)
$('#divOne > p').css('color', 'blue');
下面的程式碼,只有外層段落的字體會改變顏色,裡層不會,因為裡層是屬於 divInner
的直系元素
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script> </head> <body> <div id="divOne"> <p>外層段落一</p> <p>外層段落二</p> <p>外層段落三</p> <div id="divInner"> <p>裡層段落一</p> <p>裡層段落二</p> <p>裡層段落三</p> </div> </div> </body> <script> $('#divOne > p').css('color', 'blue'); </script> </html>
prev + next(下一個兄弟元素,等同於next()方法)
$('#divTwo + ul').css('color', 'red');
下面的程式碼,只有 id 為 divTwo
元素的下一個兄弟元素 ul 會變色,這裡是序列1-*
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script> </head> <body> <div id="divTwo"> </div> <ul> <li>序列1-1</li> <li>序列1-2</li> <li>序列1-3</li> </ul> <ul> <li>序列2-1</li> <li>序列2-2</li> <li>序列2-3</li> </ul> </body> <script> $('#divTwo + ul').css('color', 'red'); </script> </html>
prev ~ siblings(prev元素的所有兄弟元素,等同於nextAll()方法)
$('#divThree ~ span').css('color', 'red');
下面的程式碼,兄弟一到三會變色
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script> </head> <body> <div id="divThree"> </div> <span>兄弟一</span> <span>兄弟二</span> <span>兄弟三</span> </body> <script> $('#divThree ~ span').css('color', 'red'); </script> </html>
基本過濾選擇器
:first 和 :last (取第一個或最後一個元素)
$('#divOne ul li :first').css('color', 'red'); $('#divOne ul li :last').css('color', 'blue');
下面的程式碼,序列1-1(first元素)和序列1-3(last元素)會變色(高版本中不支援)
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <script src="https://cdn.bootcss.com/jquery/1.9.1/jquery.min.js"></script> </head> <body> <div id="divOne"> <ul> <li>序列1-1</li> <li>序列1-2</li> <li>序列1-3</li> </ul> </div> </body> <script> $('#divOne ul li :first').css('color', 'red'); $('#divOne ul li :last').css('color', 'blue'); </script> </html>
:not(取非元素)
$('div:not(#divOne)').css('color', 'red');
下面的程式碼,divTwo 和 divThree 會變色
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <script src="https://cdn.bootcss.com/jquery/1.9.1/jquery.min.js"></script> </head> <body> <div id="divOne"> divOne </div> <div id="divTwo"> divTwo </div> <div class="divThree"> divThree </div> </body> <script> $('div:not(#divOne)').css('color', 'red'); </script> </html>
:even和:odd(取偶數索引或奇數索引元素,索引從0開始,even表示偶數,odd表示奇數)
$('tr:even').css('background', 'red'); // 偶數行顏色 $('tr:odd').css('background', 'blue'); // 奇數行顏色
偶數行行顏色為紅色(第一行的索引為0),奇數為藍色
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <script src="https://cdn.bootcss.com/jquery/1.9.1/jquery.min.js"></script> </head> <body> <table border="1"> <tr> <th>Month</th> <th>Savings</th> <th>Name</th> </tr> <tr> <td>January</td> <td>$100</td> <td>LinBingWen</td> </tr> <tr> <td>Feb</td> <td>$200</td> <td>test</td> </tr> <tr> <td>Jna</td> <td>$2300</td> <td>kkk</td> </tr> </tr> <tr> <td>Nev</td> <td>$800</td> <td>cdf</td> </tr> </tr> <tr> <td>few</td> <td>$300</td> <td>ggg</td> </tr> </tr> <tr> <td>Oct</td> <td>$300</td> <td>ccc</td> </tr> </table> </body> <script> $('tr:even').css('background', 'red'); // 偶數行顏色 $('tr:odd').css('background', 'blue'); // 奇數行顏色 </script> </html>
:eq(x) (取指定索引的元素)
$('tr:eq(2)').css('background', 'yellow'); // 表格第二行變色
:gt(x)和:lt(x)(取大於x索引或小於x索引的元素)
$('#divFour ul li:gt(2)').css('color', 'red'); $('#divFour ul li:lt(2)').css('color', 'blue');
序列4-0到4-1是紅色,4-3到4-4為藍色
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <script src="https://cdn.bootcss.com/jquery/1.9.1/jquery.min.js"></script> </head> <body> <span id="divFour"> <ul> <li>序列4-0</li> <li>序列4-1</li> <li>序列4-2</li> <li>序列4-3</li> <li>序列4-5</li> </ul> </span> </body> <script> $('#divFour ul li:gt(2)').css('color', 'red'); $('#divFour ul li:lt(2)').css('color', 'blue'); </script> </html>
:header(取H1~H6標題元素)
$(':header').css('background', 'pink');
H1~H6的背景色都會成粉色
內容過濾選擇器
:contains(text)(取包含text文本的元素)
$('#divOne span:contains("兄弟1-1")').css('color', 'red');
下面的程式碼,兄弟1-1會變色
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <script src="https://cdn.bootcss.com/jquery/1.9.1/jquery.min.js"></script> </head> <body> <div id="divOne"> <span>兄弟1-1</span> <span>兄弟1-2</span> <span>兄弟1-3</span> </div> </body> <script> $('#divOne span:contains("兄弟1-1")').css('color', 'red'); </script> </html>
:empty(取不包含子元素或文本為空的元素)
$('#divTwo span:empty').html('沒有內容').css('color', 'red');
下面第span顯示」沒有內容」文本
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <script src="https://cdn.bootcss.com/jquery/1.9.1/jquery.min.js"></script> </head> <body> <div id="divTwo"> <span></span><br /> <span></span><br /> <span></span><br /> </div> </body> <script> $('#divTwo span:empty').html('沒有內容').css('color', 'red'); </script> </html>
:has(selector)(取選擇器匹配的元素)
$('#divThree:has(h1)').css('border', '1px solid #000'); // 為包含h1元素的div添加邊框
為包含h1元素的div添加邊框
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <script src="https://cdn.bootcss.com/jquery/1.9.1/jquery.min.js"></script> </head> <body> <div id="divThree"> <h1>我是標題一</h1> <span>我是span</span> </div> </body> <script> $('#divThree:has(h1)').css('border', '1px solid #000'); // 為包含h1元素的div添加邊框 </script> </html>
:parent(取包含子元素或文本的元素)
$('ol li:parent').css('border', '1px solid #000');
下面的程式碼,序列1和序列2所在的li會有邊框
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <script src="https://cdn.bootcss.com/jquery/1.9.1/jquery.min.js"></script> </head> <body> <ol> <li>序列1</li> <li></li> <li></li> <li>序列2</li> </ol> </body> <script> $('ol li:parent').css('border', '1px solid #000'); </script> </html>
可見性過濾選擇器
:hidden(取不可見的元素)
jQuery至1.3.2之後的:hidden選擇器僅匹配 display:none
或 <input type="hidden" />
的元素,而不匹配 visibility: hidden
或 opacity:0
的元素。這也意味著hidden只匹配那些「隱藏的」並且不佔空間的元素,像 visibility:hidden
或 opactity:0
的元素佔據了空間,會被排除在外。
:visible(取可見的元素)
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <script src="https://cdn.bootcss.com/jquery/1.8.1/jquery.min.js"></script> </head> <body> <button id = "buttonOne" style = "width:100px; height:45px;">點我改變顏色</button> <div class="div-1" style = 'display: none'>div-1</div> <div class="div-2" >div-2</div> <input type="hidden" value="hello"/> </body> <script> /* *DOM載入完全成執行 */ $(function() { $('#buttonOne').click(function(){ $('div:visible').css({'background':'blue','height':'20px'}); // div-2 $('div:hidden').show().css({'background':'red','height':'20px'}); // div-1 alert($('input:hidden').val()); // hello }); }); </script> </html>
屬性過濾選擇器
[attribute](取擁有attribute屬性的元素)
將有 title
元素的span設置背景色為籃色
$('span[title]').css('background','blue');
[attribute = value]和[attribute != value](取attribute屬性值等於value或不等於value的元素)
$('span[title = test3]').css('background','red');
將有 title='test3'
元素的span設置背景色為紅色
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <script src="https://cdn.bootcss.com/jquery/1.8.1/jquery.min.js"></script> </head> <body> <button id = "buttonOne" style = "width:100px; height:45px;">點我改變顏色</button> <div id="divOne"> <span title="test1">兄弟1-1</span> <span title="test2">兄弟1-2</span> <span title="test3">兄弟1-3</span> </div> </body> <script> /* *DOM載入完全成執行 */ $(function() { $('#buttonOne').click(function(){ $('span[title]').css('background', 'blue'); $('span[title = test3]').css('background', 'red'); }); }); </script> </html>