jQuery基礎–選擇器

  • 2019 年 10 月 10 日
  • 筆記

2. 選擇器

2.1. 什麼是jQuery選擇器

jQuery選擇器是jQuery為我們提供的一組方法,讓我們更加方便的獲取到頁面中的元素。注意:jQuery選擇器返回的是jQuery對象。

jQuery選擇器有很多,基本兼容了CSS1到CSS3所有的選擇器,並且jQuery還添加了很多更加複雜的選擇器。【查看jQuery文檔】

jQuery選擇器雖然很多,但是選擇器之間可以相互替代,就是說獲取一個元素,你會有很多種方法獲取到。所以我們平時真正能用到的只是少數的最常用的選擇器。

2.2. 基本選擇器

名稱

用法

描述

ID選擇器

$(「#id」);

獲取指定ID的元素

類選擇器

$(「.class」);

獲取同一類class的元素

標籤選擇器

$(「div」);

獲取同一類標籤的所有元素

並集選擇器

$(「div,p,li」);

使用逗號分隔,只要符合條件之一就可。

交集選擇器

$(「div.redClass」);

獲取class為redClass的div元素

總結:跟css的選擇器用法一模一樣。

<!DOCTYPE html>  <html lang="zh-CN">  <head>    <meta charset="UTF-8">    <title>Title</title>  </head>  <body>    <ul>    <li>1</li>    <li>2</li>    <li>3</li>    <li id="four">4</li>    <li>5</li>    <li class="green yellow">6</li>    <li class="green">7</li>    <li>8</li>    <li>9</li>    <li>10</li>  </ul>    <div class="green">111</div>  <div class="green">111</div>  <div class="green">111</div>  <div class="green">111</div>    <script src="jquery-1.12.4.js"></script>  <script>    //入口函數    $(function () {        //jquery如何設置樣式      //css(name, value)      //name:樣式名  value:樣式值        //id選擇器  $("#id")      //$("#four").css("backgroundColor", "red");          //$(".green").css("backgroundColor", "green");          //$("li").css("color", "red");          //交集 並集      //$("#four,.green").css("backgroundColor", "pink");        //$("li.green").css("backgroundColor", "red");      $(".green.yellow").css("backgroundColor", "pink");      });      </script>    </body>  </html>

2.3. 層級選擇器

名稱

用法

描述

子代選擇器

$(「ul>li」);

使用>號,獲取兒子層級的元素,注意,並不會獲取孫子層級的元素

後代選擇器

$(「ul li」);

使用空格,代表後代選擇器,獲取ul下的所有li元素,包括孫子等

跟CSS的選擇器一模一樣。

<!DOCTYPE html>  <html lang="zh-CN">  <head>    <meta charset="UTF-8">    <title>Title</title>  </head>  <body>    <div id="father">    <div>11</div>    <div>22      <p>111</p>      <p>222</p>      <p>333</p>    </div>    <div>33</div>    <div>44</div>    <div>55</div>    <p>66</p>    <p>77</p>    <p>88</p>  </div>    <script src="jquery-1.12.4.js"></script>  <script>    $(function () {        //$("s1,s2")// 並集選擇器      //$("s1 s2")// 後代選擇器      //$("s1>s2")// 子代選擇器        //$("li.green")      //$("s1s2") //交集選擇器          //$("#father>p").css("backgroundColor", "red");      $("#father p").css("backgroundColor", "red");    });  </script>    </body>  </html>

2.4. 過濾選擇器

這類選擇器都帶冒號:

名稱

用法

描述

:eq(index)

$(「li:eq(2)」).css(「color」, 」red」);

獲取到的li元素中,選擇索引號為2的元素,索引號index從0開始。

:odd

$(「li:odd」).css(「color」, 」red」);

獲取到的li元素中,選擇索引號為奇數的元素

:even

$(「li:even」).css(「color」, 」red」);

獲取到的li元素中,選擇索引號為偶數的元素

【案例:隔行變色】

<!DOCTYPE html>  <html lang="zh-CN">  <head>    <meta charset="UTF-8">    <title>Title</title>  </head>  <body>  <ul>    <li>我是第1個li</li>    <li>我是第2個li</li>    <li>我是第3個li</li>    <li>我是第4個li</li>    <li>我是第5個li</li>    <li>我是第6個li</li>    <li>我是第7個li</li>    <li>我是第8個li</li>    <li>我是第9個li</li>    <li>我是第10個li</li>  </ul>    <script src="jquery-1.12.4.js"></script>  <script>      $(function () {        //下標為偶數,過濾      $("li:even").css("backgroundColor", "red");      $("li:odd").css("backgroundColor", "cyan");      $("li:lt(1)").css("fontSize", "32px");      });    </script>  </body>  </html>

2.5. 篩選選擇器(方法)

篩選選擇器的功能與過濾選擇器有點類似,但是用法不一樣,篩選選擇器主要是方法。

名稱

用法

描述

children(selector)

$(「ul」).children(「li」)

相當於$(「ul>li」),子類選擇器

find(selector)

$(「ul」).find(「li」);

相當於$(「ul li」),後代選擇器

siblings(selector)

$(「#first」).siblings(「li」);

查找兄弟節點,不包括自己本身。

parent()

$(「#first」).parent();

查找父親

eq(index)

$(「li」).eq(2);

相當於$(「li:eq(2)」),index從0開始

next()

$(「li」).next()

找下一個兄弟

prev()

$(「li」).prev()

找上一次兄弟

【案例:下拉菜單】this+children+mouseenter+mouseleave  【案例:突出展示】siblings+find  【案例:手風琴】next+parent  【案例:淘寶精品】index+eq
<!DOCTYPE html>  <html>  <head lang="en">    <meta charset="UTF-8">    <title></title>    <style type="text/css">      * {        margin: 0;        padding: 0;      }        ul {        list-style: none;      }        .wrap {        width: 330px;        height: 30px;        margin: 100px auto 0;        padding-left: 10px;        background-image: url(imgs/bg.jpg);      }        .wrap li {        background-image: url(imgs/libg.jpg);      }        .wrap > ul > li {        float: left;        margin-right: 10px;        position: relative;      }        .wrap a {        display: block;        height: 30px;        width: 100px;        text-decoration: none;        color: #000;        line-height: 30px;        text-align: center;      }        .wrap li ul {        position: absolute;        top: 30px;        display: none;      }    </style>    <script src="../jquery-1.12.4.js"></script>    <script>      $(function () {          //mouseover:鼠標經過事件        //mouseout:鼠標離開事件          //mouseenter:鼠標進入事件        //mouseleave:鼠標離開事件          var $li = $(".wrap>ul>li");          //給li註冊鼠標經過事件,讓自己的ul顯示出來        $li.mouseenter(function () {          //找到所有的兒子,並且還得是ul          $(this).children("ul").show();        });          $li.mouseleave(function () {          $(this).children("ul").hide();        });          });    </script>  </head>  <body>  <div class="wrap">    <ul>      <li>        <a href="javascript:void(0);">一級菜單1</a>        <ul class="ul">          <li><a href="javascript:void(0);">二級菜單11</a></li>          <li><a href="javascript:void(0);">二級菜單12</a></li>          <li><a href="javascript:void(0);">二級菜單13</a></li>        </ul>      </li>      <li>        <a href="javascript:void(0);">一級菜單2</a>        <ul>          <li><a href="javascript:void(0);">二級菜單21</a></li>          <li><a href="javascript:void(0);">二級菜單22</a></li>          <li><a href="javascript:void(0);">二級菜單23</a></li>        </ul>      </li>      <li>        <a href="javascript:void(0);">一級菜單3</a>        <ul>          <li><a href="javascript:void(0);">二級菜單31</a></li>          <li><a href="javascript:void(0);">二級菜單32</a></li>          <li><a href="javascript:void(0);">二級菜單33</a></li>        </ul>      </li>    </ul>  </div>    </body>  </html>
<!DOCTYPE html>  <html>  <head lang="en">    <meta charset="UTF-8">    <title></title>    <style type="text/css">      * {        margin: 0;        padding: 0;      }        ul {        list-style: none;      }        body {        background: #000;      }        .wrap {        margin: 100px auto 0;        width: 630px;        height: 394px;        padding: 10px 0 0 10px;        background: #000;        overflow: hidden;        border: 1px solid #fff;      }        .wrap li {        float: left;        margin: 0 10px 10px 0;        }        .wrap img {        display: block;        border: 0;      }    </style>      <script src="../jquery-1.12.4.js"></script>    <script>      $(function () {          $(".wrap>ul>li").mouseenter(function () {            $(this).css("opacity", "1").siblings().css("opacity", "0.4");        });          $(".wrap").mouseleave(function () {          //讓所有的li都變亮          //$("li");          //$(".wrap li");          //$(".wrap>ul>li")            //$(this).children().children("li");          $(this).find('li').css("opacity", 1);        });      });    </script>    </head>  <body>  <div class="wrap">    <ul>      <li><a href="#"><img src="images/01.jpg" alt=""/></a></li>      <li><a href="#"><img src="images/02.jpg" alt=""/></a></li>      <li><a href="#"><img src="images/03.jpg" alt=""/></a></li>      <li><a href="#"><img src="images/04.jpg" alt=""/></a></li>      <li><a href="#"><img src="images/05.jpg" alt=""/></a></li>      <li><a href="#"><img src="images/06.jpg" alt=""/></a></li>    </ul>  </div>  </body>  </html>
<!DOCTYPE html>  <html>  <head lang="en">    <meta charset="UTF-8">    <title></title>    <style type="text/css">      * {padding: 0;margin: 0;}      ul { list-style-type: none;}        .parentWrap {        width: 200px;        text-align:center;        }        .menuGroup {        border:1px solid #999;        background-color:#e0ecff;      }        .groupTitle {        display:block;        height:20px;        line-height:20px;        font-size: 16px;        border-bottom:1px solid #ccc;        cursor:pointer;      }        .menuGroup > div {        height: 200px;        background-color:#fff;        display:none;      }      </style>      <script src="jquery-1.12.4.js"></script>    <script>        $(function () {            //思路分析:            //1. 給所有的span註冊點擊事件,讓當前span的兄弟div顯示出來            $(".groupTitle").click(function () {              //下一個兄弟:nextElementSibling                //鏈式編程:在jQuery裏面,方法可以一直調用下去。              $(this).next().slideDown(200).parent().siblings().children("div").slideUp(200);            });        });    </script>  </head>  <body>  <ul class="parentWrap">    <li class="menuGroup">      <span class="groupTitle">標題1</span>      <div>我是彈出來的div1</div>    </li>    <li class="menuGroup">      <span class="groupTitle">標題2</span>      <div>我是彈出來的div2</div>    </li>    <li class="menuGroup">      <span class="groupTitle">標題3</span>      <div>我是彈出來的div3</div>    </li>    <li class="menuGroup">      <span class="groupTitle">標題4</span>      <div>我是彈出來的div4</div>    </li>  </ul>  </body>  </html>
<!DOCTYPE html>  <html>  <head lang="en">    <meta charset="UTF-8">    <title></title>    <style type="text/css">      * {        margin: 0;        padding: 0;        font-size: 12px;      }        ul {        list-style: none;      }        a {        text-decoration: none;      }        .wrapper {        width: 298px;        height: 248px;        margin: 100px auto 0;        border: 1px solid pink;        overflow: hidden;      }        #left, #center, #right {        float: left;      }        #left li, #right li {        background: url(images/lili.jpg) repeat-x;      }        #left li a, #right li a {        display: block;        width: 48px;        height: 27px;        border-bottom: 1px solid pink;        line-height: 27px;        text-align: center;        color: black;      }        #left li a:hover, #right li a:hover {        background-image: url(images/abg.gif);      }        #center {        border-left: 1px solid pink;        border-right: 1px solid pink;      }    </style>      <script src="../jquery-1.12.4.js"></script>    <script>      $(function () {          //找不到對象        $(function () {          $("#left>li").mouseenter(function () {            $("#center>li:eq(" + $(this).index() + ")").show().siblings().hide();          });          $("#right>li").mouseenter(function () {            $("#center>li").eq($(this).index() + 9).show().siblings().hide();          });        })      });        //      $("#left>li").mouseenter(function () {      //        //讓center中對應下標的li顯示,其他li隱藏      //        var idx = $(this).index();      //        $("#center>li:eq(" + idx + ")").show().siblings().hide();      //      });      //      //      $("#right>li").mouseenter(function () {      //        var idx = $(this).index() + 9;      //        $("#center>li").eq(idx).show().siblings().hide();      //      //        //$("#center>li").eq(idx)  :jq對象      //        //$("#center>li").get(idx);:js對象      //      });      //    });    </script>    </head>  <body>  <div class="wrapper">      <ul id="left">      <li><a href="#">女靴</a></li>      <li><a href="#">雪地靴</a></li>      <li><a href="#">冬裙</a></li>      <li><a href="#">呢大衣</a></li>      <li><a href="#">毛衣</a></li>      <li><a href="#">棉服</a></li>      <li><a href="#">女褲</a></li>      <li><a href="#">羽絨服</a></li>      <li><a href="#">牛仔褲</a></li>    </ul>    <ul id="center">      <li><a href="#"><img src="images/女靴.jpg" width="200" height="250"/></a></li>      <li><a href="#"><img src="images/雪地靴.jpg" width="200" height="250"/></a></li>      <li><a href="#"><img src="images/冬裙.jpg" width="200" height="250"/></a></li>      <li><a href="#"><img src="images/呢大衣.jpg" width="200" height="250"/></a></li>      <li><a href="#"><img src="images/毛衣.jpg" width="200" height="250"/></a></li>      <li><a href="#"><img src="images/棉服.jpg" width="200" height="250"/></a></li>      <li><a href="#"><img src="images/女褲.jpg" width="200" height="250"/></a></li>      <li><a href="#"><img src="images/羽絨服.jpg" width="200" height="250"/></a></li>      <li><a href="#"><img src="images/牛仔褲.jpg" width="200" height="250"/></a></li>      <li><a href="#"><img src="images/女包.jpg" width="200" height="250"/></a></li>      <li><a href="#"><img src="images/男靴.jpg" width="200" height="250"/></a></li>      <li><a href="#"><img src="images/登山鞋.jpg" width="200" height="250"/></a></li>      <li><a href="#"><img src="images/皮帶.jpg" width="200" height="250"/></a></li>      <li><a href="#"><img src="images/圍巾.jpg" width="200" height="250"/></a></li>      <li><a href="#"><img src="images/皮衣.jpg" width="200" height="250"/></a></li>      <li><a href="#"><img src="images/男毛衣.jpg" width="200" height="250"/></a></li>      <li><a href="#"><img src="images/男棉服.jpg" width="200" height="250"/></a></li>      <li><a href="#"><img src="images/男包.jpg" width="200" height="250"/></a></li>      </ul>    <ul id="right">      <li><a href="#">女包</a></li>      <li><a href="#">男靴</a></li>      <li><a href="#">登山鞋</a></li>      <li><a href="#">皮帶</a></li>      <li><a href="#">圍巾</a></li>      <li><a href="#">皮衣</a></li>      <li><a href="#">男毛衣</a></li>      <li><a href="#">男棉服</a></li>      <li><a href="#">男包</a></li>    </ul>    </div>  </body>  </html>

  虹吸燈

<!DOCTYPE html>  <html lang="zh-CN">  <head>    <meta charset="UTF-8">    <title>京東商城</title>    <style>      * {        margin: 0;        padding: 0;        list-style: none;      }        .slider {        height: 340px;        width: 790px;        margin: 100px auto;        position: relative;      }        .slider li {        position: absolute;        display: none;      }        .slider li:first-child {        display: block;      }        .arrow {        display: none;      }        .slider:hover .arrow {        display: block;      }        .arrow-left,      .arrow-right {        font-family: "SimSun", "宋體";        width: 30px;        height: 60px;        background-color: rgba(0, 0, 0, 0.1);        position: absolute;        top: 50%;        margin-top: -30px;        cursor: pointer;        text-align: center;        line-height: 60px;        color: #fff;        font-weight: 700;        font-size: 30px;      }        .arrow-left:hover,      .arrow-right:hover {        background-color: rgba(0, 0, 0, .5);      }        .arrow-left {        left: 0;      }        .arrow-right {        right: 0;      }      </style>  </head>  <body>  <div class="slider">    <ul>      <li><a href="#"><img src="images/1.jpg" alt=""></a></li>      <li><a href="#"><img src="images/2.jpg" alt=""></a></li>      <li><a href="#"><img src="images/3.jpg" alt=""></a></li>      <li><a href="#"><img src="images/4.jpg" alt=""></a></li>      <li><a href="#"><img src="images/5.jpg" alt=""></a></li>      <li><a href="#"><img src="images/6.jpg" alt=""></a></li>      <li><a href="#"><img src="images/7.jpg" alt=""></a></li>      <li><a href="#"><img src="images/8.jpg" alt=""></a></li>    </ul>    <!--箭頭-->    <div class="arrow">      <span class="arrow-left"><</span>      <span class="arrow-right">></span>    </div>  </div>    <script src="jquery-1.12.4.js"></script>  <script>    $(function () {      var $li = $(".slider>ul>li");      var count = 0;        $(".arrow-right").click(function () {        count++;        if(count == $li.length){          count = 0;        }        $li.eq(count).fadeIn(1000).siblings().fadeOut(1000);      });        $(".arrow-left").click(function () {        count--;        if(count == -1){          count = $li.length - 1;        }        $li.eq(count).fadeIn(1000).siblings().fadeOut(1000);      });    });  </script>  </body>  </html>