作為前端和后臺(tái)最基礎(chǔ)可靠的神器工具JQuery崎溃,你真的對她有足夠了解么?
<br />
亞非拉地區(qū)苦逼的前端er們,有時(shí)候不得不向黑暗的低版本IE勢力低頭另玖,雖然兼容低版IE是可恥的行為,但是為了生計(jì)表伦,不得不一忍再忍谦去;雖然說現(xiàn)在H5功能強(qiáng)大到吊炸天,但是有時(shí)候還是離不開可愛的jQuery蹦哼,那么你對jQuery是真愛么鳄哭?你知道她最強(qiáng)功能的選擇器有多少種么?你常用的是不是也總是那么順手的幾個(gè)呢翔怎?窃诉?
圖靈教育的書上首頁一行字杨耙。 Standing on Shoulders of Giants. 站在巨人的肩上
<br />下邊有大神整理的詳細(xì)的選擇器,足足有 61 種飘痛!是不是大吃一驚珊膜?
為了瀏覽更清晰,整理如下宣脉。干貨车柠,get到新技能,做到精準(zhǔn)打擊塑猖。
—++—————————————————風(fēng)騷的分割線——————————————————++————
- #id : 根據(jù)給定的ID匹配一個(gè)元素
<p id="myId">這是第一個(gè)p標(biāo)簽</p>
<p id="not">這是第二個(gè)p標(biāo)簽</p>
<script type="text/javascript">
$(function(){
$("#myId").css("color","red");
});
</script>
- element : 根據(jù)給定的元素標(biāo)簽名匹配所有元素
<div>這是div標(biāo)簽1</div>
<div>這是div標(biāo)簽2</div>
<p>這是p標(biāo)簽</p>
<script type="text/javascript">
$(function(){
$("div").css("color","red");
});
</script>
- .class : 根據(jù)給定的css類名匹配元素
<p class="myClass">這是第一個(gè)p標(biāo)簽</p>
<p class="not">這是第二個(gè)p標(biāo)簽</p>
<script type="text/javascript">
$(function(){
$(".myClass").css("color","red");
});
</script>
- * : 匹配所有元素竹祷,多用于結(jié)合上下文來搜索
<p>這是p標(biāo)簽</p>
<div>這是div標(biāo)簽</div>
<script type="text/javascript">
$(function(){
$("*").css("color","red");
});
</script>
- 多選擇器selector1,selector2,selectorN : 指定任意多個(gè)選擇器,并將匹配到的元素合并到一個(gè)結(jié)果內(nèi)
<p class="myP">這是第一個(gè)p標(biāo)簽</p>
<p class="not">這是第二個(gè)p標(biāo)簽</p>
<div id="myDiv">這是第一個(gè)div標(biāo)簽</div>
<div id="not">這是第二個(gè)div標(biāo)簽</div>
<script type="text/javascript">
$(function(){
$("p.myP,div#myDiv").css("color","red");
});
</script>
- ancestor descendant : 在給定的祖先元素下匹配所有的后代元素
<div>
<span>這是第一個(gè)span標(biāo)簽</span>
<p>
<span>這是第二個(gè)span標(biāo)簽</span>
</p>
</div>
<script type="text/javascript">
$(function(){ $("div span").css("color","red");
});
</script>
- parent > child : 在給定的父元素下匹配所有的子元素
<div>
<span>這是第一個(gè)span標(biāo)簽</span>
<p>
<span>這是第二個(gè)span標(biāo)簽</span>
</p>
</div>
<script type="text/javascript">
$(function(){
$("div > span").css("color","red");
});
</script>
- prev + next : 匹配所有緊接在 prev 元素后的 next 元素
<div></div>
<p>這是第一個(gè)p標(biāo)簽</p>
<p>這是第二個(gè)p標(biāo)簽</p>
<script type="text/javascript">
$(function(){
$("div + p").css("color","red");
});
</script>
- prev ~ siblings : 匹配 prev 元素之后的所有 siblings 同輩元素
<p>這是第一個(gè)p標(biāo)簽</p>
<div> <p>這是第二個(gè)p標(biāo)簽</p></div>
<p>這是第三個(gè)p標(biāo)簽</p>
<script type="text/javascript">
$(function(){
$("div ~ p").css("color","red");
});
</script>
- :first : 獲取第一個(gè)元素
<div>
<p>這是第一個(gè)p標(biāo)簽</p>
<p>這是第二個(gè)p標(biāo)簽</p>
<p>這是第三個(gè)p標(biāo)簽</p>
</div>
<script type="text/javascript">
$(function(){
$("p:first").css("color","red");
})
;</script>
- :not(selector) : 去除所有與給定選擇器匹配的元素
<p class="del">這是第一個(gè)p標(biāo)簽</p>
<p class="del">這是第二個(gè)p標(biāo)簽</p>
<p>這是第三個(gè)p標(biāo)簽</p>
<script type="text/javascript">
$(function(){
$("p:not(.del)").css("color","red");
});
</script>
- :even : 匹配所有索引值為偶數(shù)的元素羊苟,從 0 開始計(jì)數(shù)
<p>這是索引值為0的p標(biāo)簽</p>
<p>這是索引值為1的p標(biāo)簽</p>
<p>這是索引值為2的p標(biāo)簽</p>
<p>這是索引值為3的p標(biāo)簽</p>
<script type="text/javascript">
$(function(){
$("p:even").css("color","red");
});
</script>
- :odd : 匹配所有索引值為奇數(shù)的元素塑陵,從 0 開始計(jì)數(shù)
<p>這是索引值為0的p標(biāo)簽</p>
<p>這是索引值為1的p標(biāo)簽</p>
<p>這是索引值為2的p標(biāo)簽</p>
<p>這是索引值為3的p標(biāo)簽</p>
<script type="text/javascript">
$(function(){
$("p:odd").css("color","red");
});
</script>
- :eq(index) : 匹配一個(gè)給定索引值的元素
<p>這是索引值為0的p標(biāo)簽</p>
<p>這是索引值為1的p標(biāo)簽</p>
<p>這是索引值為2的p標(biāo)簽</p>
<script type="text/javascript">
$(function(){
$("p:eq(1)").css("color","red");
});
</script>
- :gt(index) : 匹配所有大于給定索引值的元素
<p>這是索引值為0的p標(biāo)簽</p>
<p>這是索引值為1的p標(biāo)簽</p>
<p>這是索引值為2的p標(biāo)簽</p>
<script type="text/javascript">
$(function(){ $("p:gt(1)").css("color","red");
});
</script>
- :lang(language) : 選擇指定語言的所有元素
<div lang="not">這是lang="not"的div標(biāo)簽</div>
<div lang="en">這是lang="en"的div標(biāo)簽</div>
<div lang="en-us">這是lang="en-us"的div標(biāo)簽</div>
<script type="text/javascript">
$(function(){
$("div:lang(en)").css("color","red");
});
</script>
- :last() : 獲取最后個(gè)元素
<div>
<p>這是第一個(gè)p標(biāo)簽</p>
<p>這是第二個(gè)p標(biāo)簽</p>
<p>這是第三個(gè)p標(biāo)簽</p>
</div>
<script type="text/javascript">
$(function(){
$("p:last").css("color","red");
});
</script>
- :lt(index) : 匹配所有小于給定索引值的元素
<p>這是索引值為0的p標(biāo)簽</p>
<p>這是索引值為1的p標(biāo)簽</p>
<p>這是索引值為2的p標(biāo)簽</p>
<script type="text/javascript">
$(function(){
$(function(){ $("p:lt(1)").css("color","red");
});
</script>
- :header : 匹配如 h1, h2, h3之類的標(biāo)題元素
<p>這是p標(biāo)簽</p>
<h3>這是h3標(biāo)簽</h3>
<h4>這是h4標(biāo)簽</h4>
<script type="text/javascript">
$(function(){ $(":header").css("color","red");
});
</script>
- :animated : 匹配所有正在執(zhí)行動(dòng)畫效果的元素
<!--對不在執(zhí)行動(dòng)畫的元素執(zhí)行一個(gè)動(dòng)畫-->
<button id="run">Run</button>
<div style="width:100px;height:100px;border:1px solid #f00;position:absolute;"></div>
<script type="text/javascript">$(function(){
$("#run").click(function(){
$("div:not(:animated)").animate({left:100+"px"},1000);
});
</script>
- :focus : 匹配當(dāng)前獲取焦點(diǎn)的元素
<input type="text" />
<script type="text/javascript">
$(function(){
$("input").focus(); //讓input自動(dòng)獲取焦點(diǎn)
}
$("input:focus").css("background","red");
});
- :root : 選擇該文檔的根元素,在HTML中蜡励,文檔的根元素令花,和$(":root")選擇的元素一樣,永遠(yuǎn)是<html>元素
<script type="text/javascript">
$(":root").css("background-color","yellow");
</script>
- :target : 選擇由文檔URI的格式化識(shí)別碼表示的目標(biāo)元素
例如凉倚,給定的URI http://example.com/#foo兼都, $( "p:target" ),將選擇<p id="foo">元素稽寒。
- :contains(text) : 匹配包含給定文本的元素
<div>boys</div>
<div>girls</div>
<div>boys and girls</div>
<script type="text/javascript">
$(function(){ $("div:contains('boys')").css("color","red");
});
</script>
- :empty : 匹配所有不包含子元素或者文本的空元素
<p>這是有內(nèi)容的p標(biāo)簽</p>
<p></p>
<p>這是有內(nèi)容的p標(biāo)簽</p>
<p></p>
<script type="text/javascript">
$(function(){
$("p:empty").css({"width":30,"height":30,"background":"red"});
});
</script>
- :has(selector) : 匹配含有選擇器所匹配的元素的元素
<div>這是包含p元素的div標(biāo)簽 <p>這是div標(biāo)簽中的p標(biāo)簽</p></div>
<div>這是沒有p元素的div標(biāo)簽</div>
<script type="text/javascript">
$(function(){
$("div:has(p)").css("color","red");
});
</script>
- :parent : 匹配含有子元素或者文本的元素
<div> <p>這是div標(biāo)簽中的p標(biāo)簽</p></div>
<div>這是有內(nèi)容的div標(biāo)簽</div>
<div></div>
<script type="text/javascript">
$(function(){
$("div:parent").css("color","red");
});
</script>
- :hidden : 匹配所有不可見元素扮碧,或者type為hidden的元素
<div style="display: none;">這是隱藏的div標(biāo)簽</div>
<div>這是顯示的div標(biāo)簽</div>
<script type="text/javascript">
$(function(){
$("div:hidden").css("color","red");
console.log($("div:hidden")); //結(jié)果:獲取到隱藏的div
});
</script>
結(jié)果:
- :visible : 匹配所有的可見元素
<div style="display: none;">這是隱藏的div標(biāo)簽</div>
<div>這是顯示的div標(biāo)簽</div>
<script type="text/javascript">
$(function(){
$("div:visible").css("color","red");
console.log($("div:visible")); //結(jié)果:獲取到顯示的div
});
</script>
結(jié)果:- [attribute] : 匹配包含給定屬性的元素
<div class="myDiv">這是有類名的div標(biāo)簽</div>
<div>這是沒類名的div標(biāo)簽</div>
<script type="text/javascript">
$(function(){
$("div[class]").css("color","red");
});
</script>
- [attribute=value] : 匹配給定的屬性是某個(gè)特定值的元素
<div class="myDiv">這是第一個(gè)div標(biāo)簽</div>
<div class="not">這是第二個(gè)div標(biāo)簽</div>
<script type="text/javascript">
$(function(){
$("div[class='myDiv']").css("color","red");
});
</script>
- [attribute!=value] : 匹配所有不含有指定的屬性,或者屬性不等于特定值的元素
<div class="myDiv">這是第一個(gè)div標(biāo)簽</div>
<div class="not">這是第二個(gè)div標(biāo)簽</div>
<script type="text/javascript">
$(function(){
$("div[class!='myDiv']").css("color","red");
});
</script>
- [attribute^=value] : 匹配給定的屬性是以某些值開始的元素
<div class="myDiv">這是第一個(gè)div標(biāo)簽</div>
<div class="not">這是第二個(gè)div標(biāo)簽</div>
<div class="myBaby">這是第三個(gè)div標(biāo)簽</div>
<script type="text/javascript">
$(function(){
$("div[class^='my']").css("color","red");
});
</script>
- [attribute$=value] : 匹配給定的屬性是以某些值結(jié)尾的元素
<div class="myDiv">這是第一個(gè)div標(biāo)簽</div>
<div class="not">這是第二個(gè)div標(biāo)簽</div>
<div class="yourDiv">這是第三個(gè)div標(biāo)簽</div>
<script type="text/javascript">
$(function(){
$("div[class$='Div']").css("color","red");
});
</script>
- [attribute*=value] : 匹配給定的屬性是以包含某些值的元素
<div class="myDivOne">這是第一個(gè)div標(biāo)簽</div>
<div class="not">這是第二個(gè)div標(biāo)簽</div>
<div class="myDivTwo">這是第三個(gè)div標(biāo)簽</div>
<script type="text/javascript">
$(function(){
$("div[class*='Div']").css("color","red");
});
</script>
- [attrSel1][attrSel2][attrSelN] : 復(fù)合屬性選擇器杏糙,需要同時(shí)滿足多個(gè)條件時(shí)使用
<div id="myDiv" class="myDivOne">這是第一個(gè)div標(biāo)簽</div>
<div class="not">這是第二個(gè)div標(biāo)簽</div>
<div class="myDivTwo">這是第三個(gè)div標(biāo)簽</div>
<script type="text/javascript">
$(function(){
$("div[id][class*='Div']").css("color","red");
});
</script>
- :first-child : 匹配第一個(gè)子元素慎王,類似的 :first 匹配第一個(gè)元素,而此選擇符將為每個(gè)父元素匹配一個(gè)子元素
<div>
<p>這是第一個(gè)div中的第一個(gè)p標(biāo)簽</p>
<p>這是第一個(gè)div中的第二個(gè)p標(biāo)簽</p>
</div>
<div>
<p>這是第二個(gè)div中的第一個(gè)p標(biāo)簽</p>
<p>這是第二個(gè)div中的第二個(gè)p標(biāo)簽</p>
</div>
<script type="text/javascript">
$(function(){
$("div p:first-child").css("color","red");
});
</script>
- :first-of-type : 結(jié)構(gòu)化偽類搔啊,匹配E的父元素的第一個(gè)E類型的子元素
<div>
<div>這是第一個(gè)div中的div標(biāo)簽</div>
<p>這是第一個(gè)div中的第一個(gè)p標(biāo)簽</p>
<p>這是第一個(gè)div中的第二個(gè)p標(biāo)簽</p>
</div>
<div>
<p>這是第二個(gè)div中的第一個(gè)p標(biāo)簽</p>
<p>這是第二個(gè)div中的第二個(gè)p標(biāo)簽</p>
</div>
<script type="text/javascript">
$(function(){
$("p:first-of-type").css("color","red");
});
</script>
- :last-child : 匹配最后一個(gè)子元素柬祠,類似的 :last 只匹配最后一個(gè)元素,而此選擇符將為每個(gè)父元素匹配最后一個(gè)子元素
<div>
<p>這是第一個(gè)div中的第一個(gè)p標(biāo)簽</p>
<p>這是第一個(gè)div中的第二個(gè)p標(biāo)簽</p>
</div>
<div>
<p>這是第二個(gè)div中的第一個(gè)p標(biāo)簽</p>
<p>這是第二個(gè)div中的第二個(gè)p標(biāo)簽</p>
</div>
<script type="text/javascript">
$(function(){
$("div p:last-child").css("color","red");
});
</script>
- :last-of-type : 結(jié)構(gòu)化偽類负芋,匹配E的父元素的最后一個(gè)E類型的子元素漫蛔,大體的意思跟 :first-of-type 差不多,只是一個(gè)是第一個(gè)元素旧蛾,一個(gè)是最后一個(gè)元素
<div>
<p>這是第一個(gè)div中的第一個(gè)p標(biāo)簽</p>
<p>這是第一個(gè)div中的第二個(gè)p標(biāo)簽</p>
<div>這是第一個(gè)div中的div標(biāo)簽</div>
</div>
<div>
<p>這是第二個(gè)div中的第一個(gè)p標(biāo)簽</p>
<p>這是第二個(gè)div中的第二個(gè)p標(biāo)簽</p>
</div>
<script type="text/javascript">
$(function(){
$("p:last-of-type").css("color","red");
});
</script>
- :nth-child : 匹配其父元素下的第N個(gè)子或奇偶元素
注意莽龟!:eq(index)是從0開始,而這里的** :nth-child的序號(hào)是從1開始**的
<div>
<p>這是第一個(gè)div中的第一個(gè)p標(biāo)簽</p>
<p>這是第一個(gè)div中的第二個(gè)p標(biāo)簽</p>
</div>
<div>
<p>這是第二個(gè)div中的第一個(gè)p標(biāo)簽</p>
<p>這是第二個(gè)div中的第二個(gè)p標(biāo)簽</p>
</div>
<script type="text/javascript">
$(function(){
$("div p:nth-child(2)").css("color","red");
});
</script>
- :nth-last-child : 選擇所有他們父元素的第n個(gè)子元素锨天,計(jì)數(shù)從最后一個(gè)元素開始到第一個(gè)毯盈,序號(hào)從1開始
注意:要有父級(jí)元素
<div>
<p>這是div中的第一個(gè)p標(biāo)簽</p>
<p>這是div中的第二個(gè)p標(biāo)簽</p>
<p>這是div中的第三個(gè)p標(biāo)簽</p>
</div>
<script type="text/javascript">
$(function(){
$("div p:nth-last-child(1)").css("color","red");
});
</script>
- :nth-last-of-type : 選擇的所有他們的父級(jí)元素的第n個(gè)子元素,計(jì)數(shù)從最后一個(gè)元素到第一個(gè)病袄,序號(hào)從1開始
<div>
<p>這是div中的第一個(gè)p標(biāo)簽</p>
<p>這是div中的第二個(gè)p標(biāo)簽</p>
<p>這是div中的第三個(gè)p標(biāo)簽</p>
<div>這是div中的div標(biāo)簽</div>
</div>
<script type="text/javascript">
$(function(){
$("p:nth-last-of-type(1)").css("color","red");
});
</script>
- :nth-of-type : 選擇同屬于一個(gè)父元素之下搂赋,并且標(biāo)簽名相同的子元素中的第n個(gè)赘阀,序號(hào)從1開始
<div>
<div>這是div標(biāo)簽</div>
<p>這是第一個(gè)p標(biāo)簽</p>
<div>
<p>這是第二個(gè)p標(biāo)簽</p>
<p>這是第三個(gè)p標(biāo)簽</p>
</div>
<p>這是第四個(gè)p標(biāo)簽</p>
</div>
<script type="text/javascript">
$(function(){
$("p:nth-of-type(2)").css("color","red");
});
</script>
- :only-child : 如果某個(gè)元素是父元素中唯一的子元素,那將會(huì)被匹配脑奠,如果父元素中含有其他元素基公,那將不會(huì)被匹配
<div>
<div>這是div標(biāo)簽</div>
<p>這是第一個(gè)p標(biāo)簽</p>
</div>
<div>
<p>這是第二個(gè)p標(biāo)簽</p>
</div>
<script type="text/javascript">
$(function(){
$("p:only-child").css("color","red");
});
</script>
- :only-of-type : 選擇所有沒有兄弟元素,且具有相同的元素名稱的元素宋欺,如果父元素有相同的元素名稱的其他子元素轰豆,那么沒有元素會(huì)被匹配
<div>
<div>這是div標(biāo)簽</div>
<p>這是第一個(gè)p標(biāo)簽</p>
</div>
<div>
<p>這是第二個(gè)p標(biāo)簽</p>
<p>這是第三個(gè)p標(biāo)簽</p>
</div>
<script type="text/javascript">
$(function(){
$("p:only-of-type").css("color","red");
});
</script>
- :input : 匹配所有 input, textarea, select 和 button 元素
<form>
<input type="text" />
<input type="button" />
<input type="checkbox" />
<input type="password" />
<input type="radio" />
<input type="reset" />
<input type="submit" />
<select>
<option>Option</option>
</select>
<textarea></textarea>
<button>Button</button>
</form>
<script type="text/javascript">
$(function(){
$(":input").css("color","red");
});
</script>
結(jié)果:
- :text : 匹配所有的單行文本框
<form>
<input type="text" />
<input type="password" />
<input type="radio" />
<input type="reset" />
<input type="submit" />
</form>
<script type="text/javascript">
$(function(){
$(":text").css("color","red");
});
</script>
結(jié)果:
- :password : 匹配所有密碼框
<form>
<input type="text" />
<input type="password" />
<input type="submit" />
</form>
<script type="text/javascript">
$(function(){
$(":password").css("color","red");
});
</script>
結(jié)果:
- :radio : 匹配所有單選按鈕
<form>
<input type="text" />
<input type="password" />
<input type="radio" />
<input type="radio" />
</form>
<script type="text/javascript">
$(function(){
$(":radio").css("color","red");
});
</script>
結(jié)果:
- :checkbox : 匹配所有復(fù)選框
<form>
<input type="text" />
<input type="password" />
<input type="checkbox" />
<input type="checkbox" />
</form>
<script type="text/javascript">
$(function(){
$(":checkbox").css("color","red");
});
</script>
結(jié)果:
- :submit : 匹配所有提交按鈕
<form>
<input type="submit" />
</form>
<script type="text/javascript">
$(function(){
$(":submit").css("color","red");
});
</script>
- :image : 匹配所有圖像域
<form>
<input type="image"/>
</form>
<script type="text/javascript">
$(function(){
$(":image").css("color","red");
});
</script>
- :reset : 匹配所重置按鈕
<form>
<input type="reset" />
</form>
<script type="text/javascript">
$(function(){
$(":reset").css("color","red");
});
</script>
- :button : 匹配所有按鈕
<form>
<button>Button1</button>
<button>Button2</button>
</form>
<script type="text/javascript">
$(function(){
$(":button").css("color","red");
});
</script>
- :file : 匹配所有文件域
<form>
<input type="file" />
</form>
<script type="text/javascript">
$(function(){
$(":file").css("color","red");
});
</script>
- :enabled : 匹配所有可用元素
<form>
<input type="submit" disabled="disabled" />
<input type="reset" />
</form>
<script type="text/javascript">
$(function(){
$(":enabled").css("color","red");
});
</script>
- :disabled : 匹配所有不可用元素
<form>
<input type="submit" disabled="disabled" />
<input type="reset" />
</form>
<script type="text/javascript">
$(function(){
$(":disabled").css("color","red");
});
</script>
- :checked : 匹配所有選中的被選中元素(復(fù)選框、單選框等齿诞,select中的option)酸休,對于select元素來說,獲取選中推薦使用 :selected
<form>
<input type="checkbox" name="news" checked="checked" />
<input type="checkbox" name="news" />
<input type="checkbox" name="news" checked="checked" />
</form>
<script type="text/javascript">
$(function(){
$(":checked").css("color","red");
});
</script>
- :selected : 匹配所有選中的option元素
<select>
<option value="1">basketball</option>
<option value="2" selected="selected">football</option>
<option value="3">swim</option>
</select>
<script type="text/javascript">
$(function(){
$("select option:selected").css("color","red");
});
</script>
- $.escapeSelector(selector) : 這個(gè)方法通常被用在類選擇器或者ID選擇器中包含一些CSS特殊字符的時(shí)候祷杈,
這個(gè)方法基本上與CSS中CSS.escape()方法類似斑司,唯一的區(qū)別是jquery中的這個(gè)方法支持所有瀏覽器。該選擇器在jQuery庫3.0版本才開始有吠式;
<!--對含有#號(hào)的ID進(jìn)行編碼-->
<script type="text/javascript">
$(function(){
$.escapeSelector( "#target" ); // "\#target"
});
</script>
轉(zhuǎn)載自 mossbaoo大神的博文陡厘。原文鏈接點(diǎn)這里抽米;
搬運(yùn)工編輯也很辛苦的~~