使用jQuery快速高效制作網頁交互特效


第四章:JQuery選擇器

1.Jquery選擇器簡介

      (1) Jquery中的選擇器完全繼承了CSS的風格,利用Jquery選擇器,可以非常便捷和快速的找出特定的Dom元素,然后為他們添加相應的行為,而無需擔心瀏覽器是否支持這一選擇器,學會使用選擇器是學習Jqeury的基礎,Jquery的行為規則都必須在獲取到元素后才能生效。

2.jquery選擇器的優勢

     (1) 簡潔的寫法,$()函數

     (2)支持CSS1到CSS3選擇器

     (3)完善的處理機制

3.選擇器分類

      (1) 基本選擇器:通過元素id,class和標簽名等來查找Dom元素

         1)$("#id") 根據給定的ID匹配一個元素,返回單個元素  $("#name")選取Id為test的元素

             2)$(".class") 根據給定的類名匹配元素 返回集合元素  $(".class")選取所有class為class的元素

             3)$("element") 根據給定的元素名匹配元素,返回集合元素  $("input")選取所有的input元素

             4)$("*") 匹配所有的元素,返回集合元素,$("*")選取所有的元素

             5)$("selector1,selector2,...,selectorN") 將每一個選擇器匹配到的元素合並后返回集合元素, $("div,span,p.myClass")選取所有<div>,<span>和擁有class為myClass的<p>標簽的一組元素

導入文件:

    jQ庫:

          jQuery1.11.1.js

eg:

<script type="text/javascript" src="jq/jQuery1.11.1.js"></script>
    <script type="text/javascript"> $(function(){ $("span").css("background","pink "); }); $(function(){ $("body span").css("background","#6FF"); $("body>span").css("background","#F9F"); }); </script>
      </head>
  
  <body>
    <h2>千與千尋</h2>
    <p><span>別名:</span>神影少女</p>
    <p><span>導演:</span>宮崎駿</p>
    <p><span>簡介</span></p>
    <p><span>千尋</span>和爸爸媽媽一同驅車前往新家,在郊外的小路上不慎進入了神秘的隧道--他們去了另一個詭秘世界...<span>  >>詳細</span></p>
    <a href="#">立即播放</a><strong><a href="#">極速播放</a></strong> <span>下載觀看</span>
    </body>

 (2)層次選擇器:如果想通過Dom元素之間的層次關系來獲取特定元素,例如后代元素,子元素,相鄰元素和同輩元素

              1)$("ancestor descendant") 獲得ancestor元素里面的所有descendant(后代)元素,$("div span")選取<div>里的所有的<span>元素

              2)$("parent>child") 選取parent元素下的child(子)元素,返回集合元素 $("div span")選取<div>元素下元素名為<span>的子元素

                       注解:和$("ancestor descendant")有區別,$("ancestor descendant")選擇的是后代元素

              3)$("prev+next") 選取緊接在prev元素后的next元素,返回集合元素,$(".one+div")選取class為one的下一個<div>同輩元素

              4)$("prev~siblings") 選取prev元素之后的所有siblings元素,$("#two~div")選取Id為two的元素后面的所有<div>同輩元素

                     注解:可以使用next()方法來替代$('prev+next')選擇器  $(".one").next("div");可以使用nextAll()方法來替代$("prev~siblings")選擇器 $("#two").nextAll(div)

         (3)過濾選擇器:主要通過特定的過濾規則來篩選出所需要的Dom元素,按照不同的過濾規則,過濾選擇器可以分為基本過濾,內容過濾,可見性過濾,屬性過濾,子元素過濾和表單對象屬性過濾選擇器

               1)基本過濾選擇器

                       1)$(":first") 選取第一個元素,$("div:first")選取所有<div>元素中第一個<div>元素。

                       2)$(":last")選取最后一個元素,$("div:last")選取所有<div>元素中最后一個<div>元素。

                       3)$(":not(selector)")去除所有與給定選擇器匹配的元素,$("input:not(.myClass)")選取class不是myClass的<input>元素。

                       4)$(":even")選取索引是偶數的所有元素,索引從0開始,$("input:even")選取索引是偶數的<input>元素

                       5)$(":odd")選取索引是奇數的所有元素,索引從0開始,$("input:odd")選取索引是奇數的<input>元素

                       6)$(":eq(index)")選取索引等於index的元素,(index從0開始),$("input:eq(1)")選取索引等於1的<input>元素

                       7)$(":gt(index)")選取索引大於index的元素,(index從0開始),$("input:gt(1)")選取索引大於1的<input>元素(大於1,而不包括1)

                       8)$(":lt(index)")選取索引小於index的元素,(index從0開始),$("input:lt(1)")選取索引小於1的<input>元素(小於1,而不包括1)

                       9)$(":header")選取所有的標題元素,例如:h1,h2,h3等等,$(":header")選取網頁中的所有的<h1>,<h2>,<h3>...

                      10)$(":animated")選取當前正在執行動畫的所有元素,$("div:animated")選取正在執行動畫的<div>元素。

                      11)$(":focus")選取當前獲取焦點的元素,$(":focus")選取當前獲取焦點的元素

                2)內容過濾選擇器:主要體現在它所包含的子元素或者文本內容上面

                       1)$(":contains(text)")選取含有文本為"text"的元素,$("div:contains('我')")選取含有文本"我"的<div>元素

                       2)$(":empty")選取不包含子元素或者文本的空元素,$("div:empty")選取不包含子元素(包括文本元素)的<div>空元素

                       3)$(":has(selector)")選取含有選擇器所匹配的元素的元素,$("div:has(p)")選取含有<p>元素的<div>元素

                       4)$(":parent")選取含有子元素或者文本的元素,$("div:parent")選取擁有子元素(包括文本元素)的<div>元素

eg:過濾選擇器:

 

<script type="text/javascript" src="jq/jQuery1.11.1.js"></script>
    <script type="text/javascript"> $(function(){ $("li:first").css("background-color","pink"); }); </script>
  </head>
  
  <body>
    <h2>網絡小說</h2>
    <ul>
        <li>王姬不好當</li>
        <li>致命交易</li>
        <li class="three">伽藍寺</li>
        <li>逆天之春</li>
        <li>交錯時光的愛戀</li>
        <li>張震鬼故事</li>
        <li>第一次親密接觸</li>
    </ul>
  </body>

3)可見性過濾選擇器:根據元素的可見和不可見狀態來選擇相應的元素

                       1)$(":hidden")選取所有不可見的元素,$(":hidden")選取所有不可見的元素,包括<input type="hidden" />,

                           <div style="display:none;">和<div style="visibility:hidden;">等元素。如果只想選取<input>元素,可以使用$("input:hidden")

                        2)$(":visible")選取所有可見的元素,$("div:visible")選取所有可見的<div>元素

                4)屬性過濾選擇器:通過元素的屬性來獲取相應的元素

                        1)$("[attribute]")選取擁有此屬性的元素,$("div[id]")選取擁有屬性Id的<idv>元素。

                        2)$("[attribute=value]")選取屬性的值為value的元素,$("div[title=test]")選取屬性title為"test"的<div>元素

                        3)$("[attribute!=value]")選取屬性的值不等於value的元素,$("div[title!=test]")選取屬性title不等於"test"的<div>元素(注意:沒有屬性title的<div>元素也會被選取)

                        4)$("[attribute^=value]")選取屬性的直以value開始的元素,$("div[title^=test]")選取屬性title以"test"開始的<div>元素

                        5)$("[attribute$=value]")選取屬性的值以value結束的元素,$("div[title$=test]")選取屬性title以"test"結束的<div>元素

                        6)$("[attribute*=value]")選取屬性的值含有value的元素,$("div[title*=test]")選取屬性title含有"test"的<div>元素

                        7)$("[attribute|=value]")選取屬性等於給定字符串或以給字符串為前綴(該字符串后跟一個連字符"-")的元素,$("div[title|="en"]")選取屬性title等於en或者以en為前綴(給字符串后跟一個"-")的元素

                        8)$("[attribute~=value]")選取屬性用空格分隔的值中包含一個給定值得元素,$("div[title~='uk']")選取屬性title用空格分隔的值中包含字符uk的元素

                        9)$("[attribute1][attribute2][attribute3]")用屬性選擇器合並成一個復合屬性選擇器,滿足多個條件,每選擇一次,縮小一次范圍

                           $("div[id][title$='test']")選取擁有屬性id,並且屬性title以"test"結束的<div>元素

eg:屬性選擇器:

 

 <script type="text/javascript" src="jq/jQuery1.11.1.js"></script>
    <script type="text/javascript">
         //改變表頭顏色
 $(function(){ $("h2[title]").css("background-color","#09F"); }); //改變奇數顏色
 $(function(){ $("[class=odds]").css("background-color","pink"); }); //改變id不為box的元素背景顏色
 $(function(){ $("ul").css("background-color","yellow"); $("h2").css("background-color","yellow"); }); //改變以h開頭的元素顏色
 $(function(){ $("[title^=h]").css("background-color","green"); }); //改變以jp結尾的元素顏色
 $(function(){ $("[title$=jp]").css("background-color","gray"); }); //改變含有s的元素顏色
 $(function(){ $("[title*=s]").css("background-color","red"); }); //改變含有class屬性,且title屬性的值中含有y的<li>的元素顏色
 $(function(){ $("li[class][title*=y]").css("background-color","black"); }); </script>
    <style type="text/css"> #box {background-color:#FFF;border:2px solid #000;height:230px;width:200px;padding:5px;}
    </style>
  </head>
 
  <body>
  <div id="box">
     <h2 class="odds" title="cartoonlist">動畫列表</h2>
     <ul>
         <li class="odds" title="kn_jp">名偵探柯南</li>
         <li class="evens" title="hy_jp">火影忍者</li>
         <li class="odds" title="ki_jp">死神</li>
         <li class="enens" title="ko_jp">妖精的尾巴</li>
         <li class="odds" title="ht_jp">銀魂</li>
         <li class="enens" title="yy_yy">黑貓警長</li>
         <li class="odds" title="ss_hu">仙履奇緣</li>
     </ul>
    </div>
  </body>

           5)子元素過濾選擇器

                         注解:子元素過濾選擇器的過濾規則相對於其他的選擇器稍微有些復雜,只要將元素的父元素和子元素區分清楚,使用起來還是相當簡單的

                        1)$(":nth-child(idenx/even/odd/equation)")選取每個父元素下的第index個子元素或者奇偶元素(idnex從1算起)

                            :eq(index)只匹配一個元素,而:nth-child將為每一個父元素匹配子元素,並且:nth-child(index)的index是從1開始的,

                             而:eq(index)是從0開始的

                         2)$(":first-child")選取每個父元素的第一個子元素,:first只返回單個元素,而:first-child選擇符將為每個父元素匹配第一個

                                  子元素,例如:$("ul li:first-child");選取每個<ul>中的一個<li>元素

                         3)$(":last-child")選取每個父元素的最后一個子元素,和上面一樣,:last只返回當個元素,而:last-child選擇符將為每個符永

                            元素匹配最后一個子元素,例如:$("ul li:first-child");選取每個<ul>中的最后一個<li>元素。

                         4)$(":only-child")如果某個元素是它父元素中唯一的子元素,那么將會被匹配,如果父元素中含有其他元素,這不會被匹配

                            $("ul li:only-child")在<ul>中選取是唯一子元素的<li>元素

                         5):nth-child()選擇器是很常用的子元素過濾器,詳細功能如下:

                                  1)$(:nth-child(even))能選取每個父元素下的索引值是偶數的元素

                                2)$(:nth-child(odd))能選取到每個父元素下的索引值是奇數的元素

                                  3)$(:nth-child(2))能選取到每個父元素下索引值等於2的元素

                                  4)$(:nth-child(3n))能選取到每個父元素下索引值是3的倍數的元素(n從1開始)

                                  5)$(:nth-child(3n+1))能選取每個父元素下索引值是(3n+1)的元素(n從1開始)

                                  6)表單對象過濾選擇器:對所選擇的表單進行過濾

                                                  1)$(:enabled)選取所有可用元素,$("#form :enabled");選取id為"form"的表單內的所有可用元素

                                                  2)$(:disabled)選取所有不可用的元素,$("#form :enabled");選取id為"form"的表單內的所有不可用元素

                                                  3)$(:checked)選取所有被選中的元素(單選框,復選框),$("input:checked")選取所有被選中的<input>元素

                                                  4)$(:selected)選取所有被選中的選項元素(下拉列表),$("select option:selected")選取所有被選中的選項元素

eg:光棒效果:

 <script type="text/javascript" src="jq/jQuery1.11.1.js"></script>
    <script type="text/javascript"> $(function (){ //獲得所有的li
        var lis=document.getElementsByTagName("li"); //給每一個li注冊事件
        for(var i=0;i<lis.length;i++){ lis[i].onmouseover=function(){ //改變樣式
                this.style.cssText="background:pink"; }; lis[i].onmouseout=function(){ //改變樣式
                this.style.cssText="background:"; }; } }); </script>
  </head>
  
  <body>
    <ul>
    <li>就好了吼吼吼</li>
    <li>和甲方根據客</li>
    <li>換個房交會飛</li>
    <li>和規范回復好</li>
    </ul>
  </body>

  (6)表單選擇器:方便的獲取到表單的某個或者某類型的元素

                               1)$(":input")選取所有的<input>,<textarea>,<select>,<button>元素

                               2)$(":text")選取所有的單行文本框

                               3)$(":password")選取所有的密碼框

                               4)$(":radio")選取所有的單選框

                               5)$(":checkbox")選取所有的多選框

                               6)$(":submit")選取所有的提交按鈕

                               7)$(":image")選取所有的圖像按鈕

                               8)$(":reset")選取所有的重置按鈕

                               9)$(":button")選取所有的按鈕

                              10)$(":file")選取所有的上傳域

                              11)$(":hidden")選取所有的不可見元素

eg:英雄聯盟:

<script type="text/javascript" src="jq/jQuery1.11.1.js"></script>
    <script type="text/javascript"> $(document).ready(function(){ $("p").click(function(){ $(".yx").css("background-color","pink"); $("span").css("background-color","pink"); $("strong").css("font-size","20px"); $("li").css("show"); $("#show").css("background-color","pink"); }); }); </script>
    
    <style type="text/css"> li{ text-decoration:underline;
    }
    </style>
  </head>
  
 
  
  <body>
    <h1 >英雄聯盟</h1>
    <p class="yx"><<英雄聯盟>>,簡稱LoL.</p>
    
    <p><strong>Riot Games</strong>開發,為3D競技場戰游戲,其<span class="z">主創團隊</br>由實力強勁的 <strong>   魔獸爭霸 </strong>  系列游戲多人即時對戰自定義</br>地圖的開發團隊 </span>..<a href="#">更多詳情</a>
    </p>
    
    <h2>目錄</h2>
    <ul>
        <li id="show">開發團隊</li>
        <li>游戲周邊</li>
        <li>游戲介紹</li>
        <li>配置需求</li>
        <li>游戲背景</li>
    </ul>
  </body>

總結:

編寫選擇器時要注意特殊符號和空格

       1)選擇器中含有".","、","#","(","]"等特殊字符

                  根據w3c的規定,屬性中是不能含有這些特殊字符的,但在實際項目中偶爾會遇到表達式中含有"#","."等特殊字符,如果按照普通的方式去處理的話可能會出現錯誤,解決此類錯誤是使用轉義符轉義

                  例如:<div id="id#b">韓迎龍</div><div id="id[1]">韓迎龍</div>,這時的取法是這樣的 $("#id\\#b"),$("#id\\[1\\]")                        

           2)屬性選擇器的@符號問題

                在Jquery升級版本的過程中,jquery在1.3.1版本中徹底放棄了1.1.0版本遺留下來的@符號,加入你使用的是1.3.1以上的版本,

                 那么你不需要再屬性前添加@符號,例如:

                 $("div[@title='test']"),正確的寫法就是去掉@符號,$(div[title='test'])

          (2)選擇器中含有空格的注意事項

                選擇器中的空格是不容忽視的,多一個空格或者少一個空格也許會得到截然不同的結果

 

 

                                                                                                                       記住該記住的,忘記該忘記的。改變能改變的,接受不能改變的。

                                                                                                                                                                           素而安然

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM