一.jQuery的選擇器
css 的選擇器
css選擇器 | ||
符號 | 說明 | 用法 |
#id | Id選擇器 | #id{ color:red;} |
.class | 類選擇器 | .class{//} |
Element | 標簽選擇器 | p{//} |
* | 通配符選擇器 | 配合其他選擇器來使用 |
, | 並集選擇器 | div,p{} |
空格 | 后代選擇器 | div span{} |
> | 子代選擇器 | div>span{} |
+ | 緊鄰選擇器 | div+p 選擇div緊挨着的下一個p元素 |
1.jQuery的基本選擇器
作用: 選中標簽對應的JQ對象
jQuery的基本選擇器 | ||
符號 | 說明 | 用法 |
$("#demo":) | 選擇id為demo的第一個元素 | $("#demo").css("background","red") |
$(".liItem") | 選擇所有類名(樣式名)為liTtem的元素 | $(".liItem").css("background","red") |
$("div1") | 選擇所有標簽名字為div的元素 | $(".div").css("background","red") |
$("*") | 選擇所有元素(少用或配合其他選擇器來使用) | $("*").css("background","red") |
$(".liItem,div") | 選擇多個指定的元素,這個地方是選擇出了.liItem元素和div元素 | $(".liItem,div").css("background","red") |

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> </head> <body> <div></div> <div id="box"></div> <div class="box"></div> <div class="box"></div> <div></div> <script type="text/javascript" src="jquery-3.3.1.js"></script> <script type="text/javascript"> //入口函數 $(function(){ //三種方式獲取jquery對象 var jqBox1 = $("#box"); var jqBox2 = $(".box"); var jqBox3 = $('div'); //操作標簽選擇器 jqBox3.css('width', '100'); jqBox3.css('height', 100); jqBox3.css('background-color', 'red'); jqBox3.css('margin-top', 10); //操作類選擇器(隱式迭代,不用一個一個設置) jqBox2.css("background", "green"); jqBox2.text('哈哈哈') //操作id選擇器 jqBox1.css("background", "yellow"); }) </script> </body> </html>
2.層級選擇器
層級選擇器 | ||
符號 | 說明 | 用法 |
空格 | 后代選擇器 選擇所有的后代元素 | $("div span").css("background","red") |
> | 子代選擇器 選擇所有的子代元素 | $("div>span").css("background","red") |
+ | 緊鄰選擇器 選擇緊挨着的下一個元素 | $("div+span").css("background","red") |
~ | 兄弟選擇器 選擇后面的所有的兄弟元素 | $("div~span").css("background","red") |
層級選擇器選擇了選擇符后面那個元素, 比如 : div>p, 是選擇>后面的p元素

<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> <script src="jquery-3.3.1.js"></script> <script> $(function () { //獲取ul中的li設置為粉色 //后代:兒孫重孫曾孫玄孫.... var jqLi = $("ul li"); jqLi.css("margin", 5); jqLi.css("background", "pink"); //子代:親兒子 var jqOtherLi = $("ul>li"); jqOtherLi.css("background", "red"); }); </script> </head> <body> <ul> <li>111</li> <li>222</li> <li>333</li> <ol> <li>aaa</li> <li>bbb</li> <li>ccc</li> </ol> </ul> </body> </html>
3.基本過濾選擇器
基本過濾選擇器 | ||
符號 | 說明 | 用法 |
:eq(index) | index是從0開始的下一個數字,選擇序號為index的元素.(選擇第一個匹配的元素) | $("li:eq(1)").css("background","red") |
:gt(index) | index是從0開始的一個數字,選擇序號大於index的元素 | $("li:gt(2)").css("background","red") |
:lt(index) | index是從0開始的一個數字,選擇序號小於index的元素 | $("li:lt(2)").css("background","red") |
:odd | 選擇所有序號為奇數行的元素 | $("li:odd").css("background","red") |
:even | 選擇所有序號為偶數行的元素 | $("li:even").css("background","red") |
:first | 選擇匹配第一個元素 | $("li:first").css("background","red") |
:Iast | 選擇匹配的最后一個元素 | $("li:last").css("background","red") |

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>基本過濾選擇器</title> </head> <body> <ul> <li>哈哈哈哈,基本過濾選擇器</li> <li>嘿嘿嘿</li> <li>天王蓋地虎</li> <li>小雞燉蘑菇</li> </ul> </body> <script src="jquery-3.3.1.js"></script> <script type="text/javascript"> $(function(){ //獲取第一個 :first ,獲取最后一個 :last //奇數 $('li:odd').css('color','red'); //偶數 $('li:even').css('color','green'); //選中索引值為1的元素 * $('li:eq(1)').css('font-size','30px'); //大於索引值1 $('li:gt(1)').css('font-size','50px'); //小於索引值1 $('li:lt(1)').css('font-size','12px'); }) </script> </html>
4.屬性選擇器
屬性選擇器 | ||
符號 | 說明 | 用法 |
$("a[href]") | 選擇所有包含href屬性的元素 | $("a[href]").css("background","red") |
$("a[href='luffy']") | 選擇href屬性值為luffy的所有a標簽 | $("a[href='luffy']").css("background","red") |
$("a[href!='baidu']") | 選擇href屬性不等於baidu的所有元素(包括沒有href的元素) | $("a[href!='baidu']").css("background","red") |
$("a[href^='web']") | 選擇所有以web開頭的元素 | $("a[href^='web']").css("background","red") |
$("a[href$='cn']") | 選擇所有以cn結尾的元素 | $("a[href$='cn']").css("background","red") |
$("a[href*='i']") | 選擇所有包含i這個字符的元素,可以是中英文 | $("a[href*='i']").css("background","red") |
$("a[href][title]='我']") | 選擇所有符號指定屬性規則的元素,都符合才會被選中 | $("a[href][title]='我']").css("background","red") |

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> <div id="box"> <h2 class="title">屬性元素器</h2> <!--<p class="p1">我是一個段落</p>--> <ul> <li id="li1">分手應該體面</li> <li class="what" id="li2">分手應該體面</li> <li class="what">分手應該體面</li> <li class="heihei">分手應該體面</li> </ul> <form action="" method="post"> <input name="username" type='text' value="1" checked="checked" /> <input name="username1111" type='text' value="1" /> <input name="username2222" type='text' value="1" /> <input name="username3333" type='text' value="1" /> <button class="btn-default">按鈕1</button> <button class="btn-info">按鈕1</button> <button class="btn-success">按鈕1</button> <button class="btn-danger">按鈕1</button> </form> </div> </body> <script src="jquery-3.2.1.js"></script> <script type="text/javascript"> $(function(){ //標簽名[屬性名] 查找所有含有id屬性的該標簽名的元素 $('li[id]').css('color','red'); //匹配給定的屬性是what值得元素 $('li[class=what]').css('font-size','30px'); //[attr!=value] 匹配所有不含有指定的屬性,或者屬性不等於特定值的元素 $('li[class!=what]').css('font-size','50px'); //匹配給定的屬性是以某些值開始的元素 $('input[name^=username]').css('background','gray'); //匹配給定的屬性是以某些值結尾的元素 $('input[name$=222]').css('background','greenyellow'); //匹配給定的屬性是以包含某些值的元素 $('button[class*=btn]').css('background','red') }) </script> </html>
5.篩選選擇器
篩選選擇器(通過方法調用) | ||
符號 | 說明 | 用法 |
find(selector) | 查找指定元素的所有后代元素(包括子子孫孫) | $("#i_wrap").find("li").css("color","red"); 選擇id為i_wrap的所有后代元素li |
children() | 查找指定元素的直接子元素(親兒子元素) |
$("#i_wrap").children("ul").css("color","red"); 選擇id為i_wrap的所有子代元素ul |
siblings() | 查找所有兄弟元素(不包括自己) | $("#i_liItem").siblings().css("color","red"); 選擇id為i_liItem的所有兄弟元素 |
parent() | 查找父元素(親的) | $("#i_liItem").parent("ul").css("color","red"); 選擇id為i_liItem的父元素 |
eq(index) | 查找指定元素的第index個元素,index是索引號,從0開始 | $("li").eq(2).css("color","red"); 選擇所有li元素中的第二個 |

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> <div id="box"> <p class="p1"> <span>我是第一個span標簽</span> <span>我是第二個span標簽</span> <span>我是第三個span標簽</span> </p> <button>按鈕</button> </div> <ul> <li class="list">2</li> <li>3</li> <li>4</li> <li>5</li> </ul> </body> <script src="jquery-3.2.1.js"></script> <script type="text/javascript"> //獲取第n個元素 數值從0開始 $('span').eq(1).css('color','#FF0000'); //獲取第一個元素 :first :last 點語法 :get方法 和set方法 $('span').last().css('color','greenyellow'); $('span').first().css('color','greenyellow'); //查找span標簽的父元素(親的) $('span').parent('.p1').css({"width":'200px','height':'200px',"background":'red'}); //選擇所有的兄弟元素(不包括自己) $('.list').siblings('li').css('color','red'); //查找所有的后代元素 $('div').find('button').css('background','yellow'); //不寫參數代表獲取所有子元素。 $('ul').children().css("background", "green"); $('ul').children("li").css("margin-top", 10); </script> </html>
二.jQuery的屬性操作
jquery的屬性操作模塊分為四個部分:html屬性操作,dom屬性操作,類樣式操作和值操作
html屬性操作:是對html文檔中的屬性進行讀取,設置和移除操作。比如attr()、removeAttr()
DOM屬性操作:對DOM元素的屬性進行讀取,設置和移除操作。比如prop()、removeProp()
類樣式操作:是指對DOM屬性className進行添加,移除操作。比如addClass()、removeClass()、toggleClass()
值操作:是對DOM屬性value進行讀取和設置操作。比如html()、text()、val()
1.attr()
設置屬性值或者 返回被選元素的屬性值
//獲取值:attr()設置一個屬性值的時候 只是獲取值 var id = $('div').attr('id') console.log(id) var cla = $('div').attr('class') console.log(cla) //設置值 //1.設置一個值 設置div的class為box $('div').attr('class','box') //2.設置多個值,參數為對象,鍵值對存儲 $('div').attr({name:'hahaha',class:'happy'})
2.removeAttr()
移除屬性
//刪除單個屬性 $('#box').removeAttr('name'); $('#box').removeAttr('class'); //刪除多個屬性 $('#box').removeAttr('name class');
3.prop()
prop() 方法設置或返回被選元素的屬性和值。
當該方法用於返回屬性值時,則返回第一個匹配元素的值。
當該方法用於設置屬性值時,則為匹配元素集合設置一個或多個屬性/值對。
語法:
返回屬性的值:
$(selector).prop(property)
設置屬性和值:
$(selector).prop(property,value)
設置多個屬性和值:
$(selector).prop({property:value, property:value,...})
關於attr()和prop()的區別
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> </head> <body> 男<input type="radio" id='test' name="sex" checked/> 女<input type="radio" id='test2' name="sex" /> <button>提交</button> <script type="text/javascript" src="jquery-3.3.1.js"></script> <script type="text/javascript"> $(function(){ //獲取第一個input var el = $('input').first(); //undefined 因為attr是獲取的這個對象屬性節點的值,很顯然此時沒有這個屬性節點,自然輸出undefined console.log(el.attr('style')); // 輸出CSSStyleDeclaration對象,對於一個DOM對象,是具有原生的style對象屬性的,所以輸出了style對象 console.log(el.prop('style')); console.log(document.getElementById('test').style); $('button').click(function(){ alert(el.prop("checked") ? "男":"女"); }) }) </script> </body> </html>
什么時候使用attr(),什么時候使用prop()?
1.是有true,false兩個屬性使用prop();
2.其他則使用attr();
addClass(添加多個類名)
為每個匹配的元素添加指定的類名。
$('div').addClass("box");//追加一個類名到原有的類名
還可以為匹配的元素添加多個類名
$('div').addClass("box box2");//追加多個類名
removeClass
從所有匹配的元素中刪除全部或者指定的類。
移除指定的類(一個或多個)
$('div').removeClass('box');
移除全部的類
$('div').removeClass();
可以通過添加刪除類名,來實現元素的顯示隱藏
var tag = false; $('span').click(function(){ if(tag){ $('span').removeClass('active') tag=false; }else{ $('span').addClass('active') tag=true; } })
案例:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> <style type="text/css"> .active{ color: red; } </style> </head> <body> <ul> <li class="item">張三</li> <li class="item">李四</li> <li class="item">王五</li> </ul> <script type="text/javascript" src="jquery-3.3.1.js"></script> <script type="text/javascript"> $(function(){ $('ul li').click(function(){ // this指的是當前點擊的DOM對象 ,使用$(this)轉化jquery對象 $(this).addClass('active').siblings('li').removeClass('active'); }) }) </script> </body> </html>
toggleClass
如果存在(不存在)就刪除(添加)一個類。
語法:toggleClass('box')
$('span').click(function(){ //動態的切換class類名為active $(this).toggleClass('active') })
html
獲取值:
語法;
html() 是獲取選中標簽元素中所有的內容
$('#box').html();
設置值:設置該元素的所有內容 會替換掉 標簽中原來的內容
$('#box').html('<a href="https://www.baidu.com">百度一下</a>');
text
獲取值:
text() 獲取匹配元素包含的文本內容
語法:
$('#box').text();
設置值:
設置該所有的文本內容
$('#box').text('<a href="https://www.baidu.com">百度一下</a>');
注意:值為標簽的時候 不會被渲染為標簽元素 只會被當做值渲染到瀏覽器中
val
獲取值:
val()用於表單控件中獲取值,比如input textarea select等等
設置值:
$('input').val('設置了表單控件中的值');