jQuery之六十一種選擇器

作為前端和后臺最基礎可靠的神器工具JQuery,你真的對她有足夠了解么?

<br />

亞非拉地區苦逼的前端er們,有時候不得不向黑暗的低版本IE勢力低頭,雖然兼容低版IE是可恥的行為,但是為了生計,不得不一忍再忍;雖然說現在H5功能強大到吊炸天,但是有時候還是離不開可愛的jQuery,那么你對jQuery是真愛么?你知道她最強功能的選擇器有多少種么?你常用的是不是也總是那么順手的幾個呢??


圖靈教育的書上首頁一行字。 Standing on Shoulders of Giants. 站在巨人的肩上


<br />下邊有大神整理的詳細的選擇器,足足有 61 種!是不是大吃一驚?
為了瀏覽更清晰,整理如下。干貨,get到新技能,做到精準打擊。

                 —++—————————————————風騷的分割線——————————————————++————
  1. #id : 根據給定的ID匹配一個元素
       <p id="myId">這是第一個p標簽</p>
       <p id="not">這是第二個p標簽</p>
       <script type="text/javascript"> 
          $(function(){ 
              $("#myId").css("color","red");
          });
       </script>
  1. element : 根據給定的元素標簽名匹配所有元素
<div>這是div標簽1</div>
<div>這是div標簽2</div>
<p>這是p標簽</p>
<script type="text/javascript"> 
      $(function(){ 
          $("div").css("color","red"); 
        });
</script>
  1. .class : 根據給定的css類名匹配元素
<p class="myClass">這是第一個p標簽</p>
<p class="not">這是第二個p標簽</p>
<script type="text/javascript">
     $(function(){ 
        $(".myClass").css("color","red"); 
     });
</script>
  1. * : 匹配所有元素,多用于結合上下文來搜索
<p>這是p標簽</p>
<div>這是div標簽</div>
<script type="text/javascript">
 $(function(){
   $("*").css("color","red"); 
});
</script>
  1. 多選擇器selector1,selector2,selectorN : 指定任意多個選擇器,并將匹配到的元素合并到一個結果內
<p class="myP">這是第一個p標簽</p>
<p class="not">這是第二個p標簽</p>
<div id="myDiv">這是第一個div標簽</div>
<div id="not">這是第二個div標簽</div>
<script type="text/javascript">
 $(function(){
     $("p.myP,div#myDiv").css("color","red");
 });
</script>
  1. ancestor descendant : 在給定的祖先元素下匹配所有的后代元素
<div> 
<span>這是第一個span標簽</span> 
<p>
 <span>這是第二個span標簽</span>
 </p>
</div>
<script type="text/javascript"> 
$(function(){ $("div span").css("color","red"); 
});
</script>
  1. parent > child : 在給定的父元素下匹配所有的子元素
<div> 
  <span>這是第一個span標簽</span>
    <p>
       <span>這是第二個span標簽</span>
   </p>
</div>
<script type="text/javascript"> 
    $(function(){
         $("div > span").css("color","red"); 
    });
</script>
  1. prev + next : 匹配所有緊接在 prev 元素后的 next 元素
<div></div>  
<p>這是第一個p標簽</p>
<p>這是第二個p標簽</p>
<script type="text/javascript"> 
    $(function(){ 
        $("div + p").css("color","red");
     });
</script>
  1. prev ~ siblings : 匹配 prev 元素之后的所有 siblings 同輩元素
<p>這是第一個p標簽</p>
<div> <p>這是第二個p標簽</p></div>
<p>這是第三個p標簽</p>
<script type="text/javascript"> 
    $(function(){   
        $("div ~ p").css("color","red"); 
    });
</script>
  1. :first : 獲取第一個元素
<div> 
<p>這是第一個p標簽</p>
 <p>這是第二個p標簽</p>
 <p>這是第三個p標簽</p>
</div>
<script type="text/javascript"> 
$(function(){
       $("p:first").css("color","red");
 })
;</script>
  1. :not(selector) : 去除所有與給定選擇器匹配的元素
<p class="del">這是第一個p標簽</p>
<p class="del">這是第二個p標簽</p>
<p>這是第三個p標簽</p>
<script type="text/javascript"> 
$(function(){ 
    $("p:not(.del)").css("color","red"); 
});
</script>
  1. :even : 匹配所有索引值為偶數的元素,從 0 開始計數
<p>這是索引值為0的p標簽</p>
<p>這是索引值為1的p標簽</p>
<p>這是索引值為2的p標簽</p>
<p>這是索引值為3的p標簽</p>
<script type="text/javascript"> 
$(function(){ 
    $("p:even").css("color","red"); 
});
</script>
  1. :odd : 匹配所有索引值為奇數的元素,從 0 開始計數
<p>這是索引值為0的p標簽</p>
<p>這是索引值為1的p標簽</p>
<p>這是索引值為2的p標簽</p>
<p>這是索引值為3的p標簽</p>
<script type="text/javascript"> 
$(function(){ 
    $("p:odd").css("color","red"); 
});
</script>
  1. :eq(index) : 匹配一個給定索引值的元素
<p>這是索引值為0的p標簽</p>
<p>這是索引值為1的p標簽</p>
<p>這是索引值為2的p標簽</p>
<script type="text/javascript">
 $(function(){ 
    $("p:eq(1)").css("color","red");
 });
</script>
  1. :gt(index) : 匹配所有大于給定索引值的元素
<p>這是索引值為0的p標簽</p>
<p>這是索引值為1的p標簽</p>
<p>這是索引值為2的p標簽</p>
<script type="text/javascript"> 
    $(function(){ $("p:gt(1)").css("color","red");
 });
</script>
  1. :lang(language) : 選擇指定語言的所有元素
<div lang="not">這是lang="not"的div標簽</div>
<div lang="en">這是lang="en"的div標簽</div>
<div lang="en-us">這是lang="en-us"的div標簽</div>
<script type="text/javascript"> 
$(function(){ 
    $("div:lang(en)").css("color","red"); 
});
</script>
  1. :last() : 獲取最后個元素
<div> 
  <p>這是第一個p標簽</p>
  <p>這是第二個p標簽</p> 
  <p>這是第三個p標簽</p>
</div>
<script type="text/javascript">
 $(function(){ 
    $("p:last").css("color","red");
 });
</script>
  1. :lt(index) : 匹配所有小于給定索引值的元素
<p>這是索引值為0的p標簽</p>
<p>這是索引值為1的p標簽</p>
<p>這是索引值為2的p標簽</p>
<script type="text/javascript">
 $(function(){ 
   $(function(){ $("p:lt(1)").css("color","red"); 
});
</script>
  1. :header : 匹配如 h1, h2, h3之類的標題元素
<p>這是p標簽</p>
<h3>這是h3標簽</h3>
<h4>這是h4標簽</h4>
<script type="text/javascript"> 
    $(function(){ $(":header").css("color","red");
 });
</script>
  1. :animated : 匹配所有正在執行動畫效果的元素
<!--對不在執行動畫的元素執行一個動畫-->
<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>                      
  1. :focus : 匹配當前獲取焦點的元素
<input type="text" />
<script type="text/javascript">
    $(function(){ 
        $("input").focus(); //讓input自動獲取焦點
    }
     $("input:focus").css("background","red");
});
  1. :root : 選擇該文檔的根元素,在HTML中,文檔的根元素,和$(":root")選擇的元素一樣,永遠是<html>元素
<script type="text/javascript"> 
$(":root").css("background-color","yellow");
</script>
  1. :target : 選擇由文檔URI的格式化識別碼表示的目標元素
例如,給定的URI http://example.com/#foo, $( "p:target" ),將選擇<p id="foo">元素。
  1. :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>
  1. :empty : 匹配所有不包含子元素或者文本的空元素
<p>這是有內容的p標簽</p>
<p></p>
<p>這是有內容的p標簽</p>
<p></p>
<script type="text/javascript">
 $(function(){ 
      $("p:empty").css({"width":30,"height":30,"background":"red"}); 
});
</script>
  1. :has(selector) : 匹配含有選擇器所匹配的元素的元素
<div>這是包含p元素的div標簽 <p>這是div標簽中的p標簽</p></div>
<div>這是沒有p元素的div標簽</div>
<script type="text/javascript"> 
$(function(){ 
    $("div:has(p)").css("color","red"); 
});
</script>
  1. :parent : 匹配含有子元素或者文本的元素
<div> <p>這是div標簽中的p標簽</p></div>
<div>這是有內容的div標簽</div>
<div></div>
<script type="text/javascript"> 
$(function(){ 
    $("div:parent").css("color","red"); 
});
</script>
  1. :hidden : 匹配所有不可見元素,或者type為hidden的元素
<div style="display: none;">這是隱藏的div標簽</div>
<div>這是顯示的div標簽</div>
<script type="text/javascript"> 
$(function(){ 
    $("div:hidden").css("color","red");    
    console.log($("div:hidden")); //結果:獲取到隱藏的div 
});
</script>

結果:


  1. :visible : 匹配所有的可見元素
<div style="display: none;">這是隱藏的div標簽</div>
<div>這是顯示的div標簽</div>
<script type="text/javascript"> 
$(function(){ 
    $("div:visible").css("color","red"); 
     console.log($("div:visible")); //結果:獲取到顯示的div 
});
</script> 

結果:
  1. [attribute] : 匹配包含給定屬性的元素
<div class="myDiv">這是有類名的div標簽</div>
<div>這是沒類名的div標簽</div>
<script type="text/javascript"> 
$(function(){ 
    $("div[class]").css("color","red"); 
});
</script>
  1. [attribute=value] : 匹配給定的屬性是某個特定值的元素
<div class="myDiv">這是第一個div標簽</div>
<div class="not">這是第二個div標簽</div>
<script type="text/javascript">
$(function(){ 
    $("div[class='myDiv']").css("color","red"); 
});
</script>
  1. [attribute!=value] : 匹配所有不含有指定的屬性,或者屬性不等于特定值的元素
<div class="myDiv">這是第一個div標簽</div>
<div class="not">這是第二個div標簽</div>
<script type="text/javascript"> 
$(function(){
     $("div[class!='myDiv']").css("color","red"); 
});
</script>
  1. [attribute^=value] : 匹配給定的屬性是以某些值開始的元素
<div class="myDiv">這是第一個div標簽</div>
<div class="not">這是第二個div標簽</div>
<div class="myBaby">這是第三個div標簽</div>
<script type="text/javascript">
$(function(){ 
    $("div[class^='my']").css("color","red"); 
});
</script>
  1. [attribute$=value] : 匹配給定的屬性是以某些值結尾的元素
<div class="myDiv">這是第一個div標簽</div>
<div class="not">這是第二個div標簽</div>
<div class="yourDiv">這是第三個div標簽</div>
<script type="text/javascript"> 
$(function(){ 
    $("div[class$='Div']").css("color","red"); 
});
</script>
  1. [attribute*=value] : 匹配給定的屬性是以包含某些值的元素
<div class="myDivOne">這是第一個div標簽</div>
<div class="not">這是第二個div標簽</div>
<div class="myDivTwo">這是第三個div標簽</div>
<script type="text/javascript"> 
$(function(){ 
  $("div[class*='Div']").css("color","red"); 
});
</script>
  1. [attrSel1][attrSel2][attrSelN] : 復合屬性選擇器,需要同時滿足多個條件時使用
<div id="myDiv" class="myDivOne">這是第一個div標簽</div>
<div class="not">這是第二個div標簽</div>
<div class="myDivTwo">這是第三個div標簽</div>
<script type="text/javascript"> 
$(function(){ 
    $("div[id][class*='Div']").css("color","red"); 
});
</script>
  1. :first-child : 匹配第一個子元素,類似的 :first 匹配第一個元素,而此選擇符將為每個父元素匹配一個子元素
<div> 
    <p>這是第一個div中的第一個p標簽</p>
    <p>這是第一個div中的第二個p標簽</p>
</div>
<div> 
    <p>這是第二個div中的第一個p標簽</p> 
    <p>這是第二個div中的第二個p標簽</p>
</div>
<script type="text/javascript"> 
$(function(){ 
    $("div p:first-child").css("color","red"); 
});
</script>
  1. :first-of-type : 結構化偽類,匹配E的父元素的第一個E類型的子元素
<div>
     <div>這是第一個div中的div標簽</div> 
        <p>這是第一個div中的第一個p標簽</p> 
        <p>這是第一個div中的第二個p標簽</p>
</div>
<div> 
    <p>這是第二個div中的第一個p標簽</p> 
    <p>這是第二個div中的第二個p標簽</p>
</div>
<script type="text/javascript"> 
$(function(){ 
    $("p:first-of-type").css("color","red"); 
});
</script>
  1. :last-child : 匹配最后一個子元素,類似的 :last 只匹配最后一個元素,而此選擇符將為每個父元素匹配最后一個子元素
<div> 
    <p>這是第一個div中的第一個p標簽</p> 
    <p>這是第一個div中的第二個p標簽</p>
</div>
<div> 
    <p>這是第二個div中的第一個p標簽</p> 
    <p>這是第二個div中的第二個p標簽</p>
</div>
<script type="text/javascript"> 
$(function(){ 
    $("div p:last-child").css("color","red"); 
});
</script>
  1. :last-of-type : 結構化偽類,匹配E的父元素的最后一個E類型的子元素,大體的意思跟 :first-of-type 差不多,只是一個是第一個元素,一個是最后一個元素
<div> 
    <p>這是第一個div中的第一個p標簽</p> 
    <p>這是第一個div中的第二個p標簽</p> 
    <div>這是第一個div中的div標簽</div>
</div>
<div> 
    <p>這是第二個div中的第一個p標簽</p> 
    <p>這是第二個div中的第二個p標簽</p>
</div>
<script type="text/javascript"> 
$(function(){ 
    $("p:last-of-type").css("color","red"); 
});
</script>
  1. :nth-child : 匹配其父元素下的第N個子或奇偶元素
      注意!:eq(index)是從0開始,而這里的** :nth-child的序號是從1開始**的
<div> 
    <p>這是第一個div中的第一個p標簽</p> 
    <p>這是第一個div中的第二個p標簽</p>
</div>
<div> 
    <p>這是第二個div中的第一個p標簽</p> 
    <p>這是第二個div中的第二個p標簽</p>
</div>
<script type="text/javascript"> 
$(function(){ 
    $("div p:nth-child(2)").css("color","red");
});
</script>
  1. :nth-last-child : 選擇所有他們父元素的第n個子元素,計數從最后一個元素開始到第一個,序號從1開始
      注意:要有父級元素
<div> 
    <p>這是div中的第一個p標簽</p> 
    <p>這是div中的第二個p標簽</p> 
    <p>這是div中的第三個p標簽</p>
</div>
<script type="text/javascript"> 
$(function(){ 
    $("div p:nth-last-child(1)").css("color","red"); 
});
</script>
  1. :nth-last-of-type : 選擇的所有他們的父級元素的第n個子元素,計數從最后一個元素到第一個,序號從1開始
<div> 
    <p>這是div中的第一個p標簽</p> 
    <p>這是div中的第二個p標簽</p> 
    <p>這是div中的第三個p標簽</p> 
    <div>這是div中的div標簽</div>
</div>
<script type="text/javascript"> 
$(function(){
     $("p:nth-last-of-type(1)").css("color","red"); 
});
</script>
  1. :nth-of-type : 選擇同屬于一個父元素之下,并且標簽名相同的子元素中的第n個,序號從1開始
<div> 
    <div>這是div標簽</div> 
    <p>這是第一個p標簽</p> 
    <div> 
         <p>這是第二個p標簽</p> 
         <p>這是第三個p標簽</p>
     </div> 
    <p>這是第四個p標簽</p>
</div>
<script type="text/javascript"> 
$(function(){
     $("p:nth-of-type(2)").css("color","red"); 
});
</script>
  1. :only-child : 如果某個元素是父元素中唯一的子元素,那將會被匹配,如果父元素中含有其他元素,那將不會被匹配
<div> 
    <div>這是div標簽</div> 
    <p>這是第一個p標簽</p>
</div>
<div> 
    <p>這是第二個p標簽</p>
</div>
<script type="text/javascript"> 
    $(function(){ 
        $("p:only-child").css("color","red"); 
    });
</script>
  1. :only-of-type : 選擇所有沒有兄弟元素,且具有相同的元素名稱的元素,如果父元素有相同的元素名稱的其他子元素,那么沒有元素會被匹配
<div> 
    <div>這是div標簽</div> 
        <p>這是第一個p標簽</p>
    </div>
<div> 
<p>這是第二個p標簽</p> 
<p>這是第三個p標簽</p>
</div>
<script type="text/javascript"> 
      $(function(){ 
            $("p:only-of-type").css("color","red"); 
      });
</script>
  1. :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>

結果:


  1. :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>

結果:


  1. :password : 匹配所有密碼框
<form> 
    <input type="text" /> 
    <input type="password" /> 
    <input type="submit" />
</form>
<script type="text/javascript"> 
$(function(){ 
    $(":password").css("color","red"); 
});
</script>

結果:


  1. :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>

結果:


  1. :checkbox : 匹配所有復選框
<form> 
    <input type="text" /> 
    <input type="password" /> 
    <input type="checkbox" /> 
    <input type="checkbox" />
</form>
<script type="text/javascript"> 
 $(function(){ 
      $(":checkbox").css("color","red"); 
});
</script>

結果:


  1. :submit : 匹配所有提交按鈕
<form> 
  <input type="submit" />
</form>
<script type="text/javascript"> 
$(function(){ 
    $(":submit").css("color","red"); 
});
</script>
  1. :image : 匹配所有圖像域
<form> 
    <input type="image"/>  
</form>
<script type="text/javascript"> 
$(function(){ 
    $(":image").css("color","red"); 
});
</script>
  1. :reset : 匹配所重置按鈕
<form> 
    <input type="reset" />
</form>
<script type="text/javascript"> 
$(function(){ 
    $(":reset").css("color","red"); 
});
</script>
  1. :button : 匹配所有按鈕
<form> 
<button>Button1</button> 
<button>Button2</button>
</form>
<script type="text/javascript"> 
$(function(){ 
    $(":button").css("color","red"); 
});
</script>
  1. :file : 匹配所有文件域
<form> 
  <input type="file" />
</form>
<script type="text/javascript"> 
$(function(){ 
    $(":file").css("color","red"); 
});
</script>
  1. :enabled : 匹配所有可用元素
<form> 
    <input type="submit" disabled="disabled" /> 
    <input type="reset" />
</form>
<script type="text/javascript"> 
  $(function(){
       $(":enabled").css("color","red");
   });
</script>
  1. :disabled : 匹配所有不可用元素
<form> 
    <input type="submit" disabled="disabled" /> 
    <input type="reset" />
</form>
<script type="text/javascript"> 
$(function(){ 
    $(":disabled").css("color","red"); 
});
</script>
  1. :checked : 匹配所有選中的被選中元素(復選框、單選框等,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>
  1. :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>
  1. $.escapeSelector(selector) : 這個方法通常被用在類選擇器或者ID選擇器中包含一些CSS特殊字符的時候,
    這個方法基本上與CSS中CSS.escape()方法類似,唯一的區別是jquery中的這個方法支持所有瀏覽器。該選擇器在jQuery庫3.0版本才開始有;
<!--對含有#號的ID進行編碼-->
<script type="text/javascript"> 
$(function(){
       $.escapeSelector( "#target" ); // "\#target"  
});
</script>

轉載自 mossbaoo大神的博文。原文鏈接點這里
搬運工編輯也很辛苦的~~

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容