jQuery—常规选择器

jQuery最核心的组成部分就是:选择器引擎。它继承了CSS的语法,可以对DOM素的标签名、属性名、状态等进行快速准确的选择,并且不必担心浏览器的兼容性

 

#1. 简单选择器

选择器

CSS模式

jQuery模式

表述

元素选择器

div{}

$(‘div’)

获取所有 div 元素的DOM对象

类选择器

.div{}

$(‘.div’)

获取所有classbox的所有DOM对象

ID选择器

#box{}

$(‘#box’)

获取一个 ID box 元素的DOM对象

使用:

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>jQuery 简单选择器</title>

<script type="text/javascript" src="/jquery/Plugins/jquery-3.1.0.min.js"></script>

<link rel="stylesheet" href="/jquery/Plugins/CSS/cg.css" />

</head>

<body>

    <!-- id选择器 -->

    <!-- <div id="box">常规选择器</div> -->

 

    <!-- 元素标签选择器 -->

    <!--   <div>常规选择器1</div>

    <div>常规选择器2</div>

    <div>常规选择器3</div> -->

 

    <!-- 类选择器 -->

    <!-- <div class="box">常规选择器1</div>

    <div class="box">常规选择器2</div>

    <div class="_box ">常规选择器3</div> -->

 

    <div id="box">

       <p>常规选择器1</p>

       <p>常规选择器1</p>

       <p>常规选择器1</p>

       <div>

           <p>常规选择器2</p>

           <p>常规选择器2</p>

           <p>常规选择器2</p>

       </div>

    </div>

 

    <script type="text/javascript">

       $(function() {

           /*

              id选择器

           $("#box").css('color', 'red'); */

 

           /*

              元素标签选择器

              $('div').css('background','yellow');

            */

           /*

              类选择器

          

           $('.box').css('color','red');

           $('._box').css('color','blue');   

            */

 

           // alert($('.box').length);// 返回娶到的个数

       })

    </script>

    <script type="text/javascript">

       /*

           jQuery 中自带的有容错的的功能

       */

       /* $(function() {

           $('#box > p').css('color', 'red');

       }) */

    </script>

</body>

</html>

 

 

 

#2. 进阶选择器

选择器

CSS模式

jQuery模式

描述

群组选择器

span,em,box{}

$(‘span,em,.box’)

获取多个选择器的DOM对象

统配选择器

*{}

$(‘*’)

获取所有元素标签的DOM对象

使用:

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>jQuery 进阶选择器</title>

<script type="text/javascript" src="/jquery/Plugins/jquery-3.1.0.min.js"></script>

<link rel="stylesheet" href="/jquery/Plugins/CSS/cg.css" />

</head>

<body>

    <!-- 六种通配符可以组合使用 -->

 

    <!-- 群主选择器 -->

    <!-- <div>群主选择器</div>

    <div>群主选择器</div>

    <div>群主选择器</div>

   

    <p>群主选择器</p>

    <p>群主选择器</p>

    <p>群主选择器</p>

   

    <strong>群主选择器</strong>

    <strong>群主选择器</strong>

    <strong>群主选择器</strong> -->

   

    <!-- 后代选择器 -->

<!--   <ul>

       <li><a href="#">首页</a></li>

       <li><a href="#">首页</a></li>

    </ul>

   

    <a href="#">其他</a>

    <a href="#">其他</a>

     -->

    <!-- 通配符选择器 -->

<!--   <ul>

       <li><a href="#">首页</a></li>

       <li><a href="#">首页</a></li>

    </ul>

   

    <a href="#">其他</a>

    <a href="#">其他</a> -->

   

    <!-- 组合使用 -->

    <!-- <ul>

       <li><a href="#">首页</a></li>

       <li><a href="#">首页</a></li>

       <li><string href="#">首页</string></li>

       <li><string href="#">首页</string></li>

    </ul>

   

    <a href="#">其他</a>

    <a href="#">其他</a>-->

   

    <script type="text/javascript">

       $(function(){

           /* 群主选择器

           $('div,p,strong').css('color','red'); */

          

           /* 后代选择器

           $('ul li a').css('color','red');

            */

            

            /* 通配符选择器

            $('*').css('color','red');

           */

            

           /* 统配所有元素个数 */

           /* alert($('*').length); */

       })

    </script>

</body>

</html>

 

 

 

#3. 高级选择器

尽量少用高级选择器,速度慢!

选择器

CSS模式

jQuery模式

描述

后代选择器

ul li a{}

$(‘ul li a’)

获取追溯到的多个DOM对象

子选择器

div>p{}

$(‘div p’)

只获取子类节点的多个DOM对象

next选择器

div+p{}

$(‘div+p’)

只获取某节点后一个同级DOM对象

nextAll选择器

div~p{}

$(‘div~p’)

获取某节点后面所有同级DOM对象

使用:

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>jQuery 高级选择器</title>

<script type="text/javascript" src="/jquery/Plugins/jquery-3.1.0.min.js"></script>

<link rel="stylesheet" href="/jquery/Plugins/CSS/cg.css" />

</head>

<body>

    <!--   <div id="box">

       <p>jQuery 高级选择器</p>

       <p>jQuery 高级选择器</p>

       <p>jQuery 高级选择器</p>

       <div>

           <p>jQuery 高级选择器-1</p>

           <p>jQuery 高级选择器-1</p>

           <p>jQuery 高级选择器-1</p>

       </div>

    </div> -->

 

    <p>jQuery 高级选择器</p>

    <p>jQuery 高级选择器</p>

    <p>jQuery 高级选择器</p>

    <hr id="h"/>

    <p>jQuery 高级选择器</p>

    <p>jQuery 高级选择器</p>

    <p>jQuery 高级选择器</p>

 

    <script type="text/javascript">

       $(function() {

           /* $('#box > p').css('color','red'); */

           /* $('#h+p').css('color','red')  // 同级的那个元素的后一个同级元素 */

           $('#h~p').css('color','red') // 同级的那个元素的后的所有同级元素

       })

    </script>

</body>

</html>

 

 

等价方法:

$(‘ul li a’)

$(‘ul’).find(‘li’).find(a).css(…)

$(‘div>p’)

$(‘div’).children(‘p’).css(…)

$(‘div+p’)

$(‘div’).next(‘p’).css(…)

$(‘div~p’)

$(‘div’).nextAll(‘p’).css(…)

同级所有上面的元素

$(‘div’).prevAll(‘p’).css(…)

同级上下所有元素选定

$(‘div’).siblings(‘p’).css(…)

 

#4. 选择器快慢分析

最快的是 find()方法,最慢的是$('#box p')这种高级选择器。

//这条最快,会使用原生的 getElementByIdByNameByTagName querySelectorAll() $('#box').find('p');

//jQuery 会自动把这条语句转成$('#box').find('p'),这会导致一定的性能损失。它比最快

的形式慢了 5%-10% $('p', '#box');

//这条语句在 jQuery 内部,会使用$.sibling() javascript nextSibling()方法,一个个遍

历节点。它比最快的形式大约慢 50% $('#box').children('p');

//jQuery 内部使用 Sizzle 引擎,处理各种选择器。Sizzle 引擎的选择顺序是从右到左,

所以这条语句是先选 p,然后再一个个过滤出父元素#box,这导致它比最快的形式大约慢 70%

$('#box > p');

//这条语句与上一条是同样的情况。但是,上一条只选择直接的子元素,这一条可以于

选择多级子元素,所以它的速度更慢,大概比最快的形式慢了 77%

$('#box p');

 

猜你喜欢

转载自blog.csdn.net/u013468915/article/details/52082918