zoukankan      html  css  js  c++  java
  • 锋利的jQuery读书笔记---选择器

    前段时间入手了锋利的jQuery(第二版),想着加强下自己的js能力,可前段时间一只在熟悉Spring和Hibernate。最近抽时间开始读这本书了,随便也做了些记录。

    读书的过程是边看边代码测试,所以笔记和代码也就写到一起了。下面是选择器的记录:

    <!DOCTYPE html>
    <html>
    <head lang="zh">
        <meta charset="UTF-8">
        <script type="text/javascript" src="../js/jquery-2.1.3.js"></script>
    
        <title></title>
    
        <style>
    
            div, span, p{
                width: 140px;
                height: 140px;
                margin: 5px;
                background: #aaa;
                border: #000 1px solid;
                float: left;
                font-size: 17px;
                font-family: Verdana;
            }
    
            div.mini {
                width: 55px;
                height: 55px;
                background-color: #aaa;
                font-size: 10px;
            }
    
            div.hide {
                display: none;
            }
    
        </style>
    
    </head>
    <body>
    
    <h1>jQuery选择器</h1>
    
    <div class="one" id="one">
        id为one, class为one的div
        <div class="mini">class为mini</div>
    </div>
    
    <div class="one" id="two" title="test">
        id为two, class为one, title为test的div
        <div class="mini" title="other">class为mini, title为other</div>
        <div class="mini" title="test">class为mini, title为test</div>
    </div>
    
    <div class="one">
        <div class="mini">class为mini</div>
        <div class="mini">class为mini</div>
        <div class="mini">class为mini</div>
        <div class="mini"></div>
    </div>
    
    <div class="one">
        <div class="mini">class为mini</div>
        <div class="mini">class为mini</div>
        <div class="mini">class为mini</div>
        <div class="mini" title="tesst">class为mini, title为tesst</div>
    </div>
    
    <div style="display:none;" class="none">
        style的display为"none"的div
    </div>
    
    <div class="hide">class为hide的div</div>
    
    <div>
        包含input的type为"hidden"的div<input type="hidden" size="8" />
    </div>
    
    <span id="mover">正在执行动画的span元素.</span>
    
    <br/><br/><br/><br/><br/><br/><br/><br/>
    <hr/>
    
    <div title="en">title为en的div元素</div>
    <div title="en-UK">title为en-UK的div元素</div>
    <div title="english">title为english的div元素</div>
    <div title="en uk">title为en uk的div元素</div>
    <div title="uken">title为uken的div元素</div>
    
    <br/><br/><br/><br/><br/><br/><br/><br/>
    <hr/>
    
    <form id="form1" action="#">
        可用元素: <input name="add" value="可用文本框" /> <br/>
        不可用元素: <input name="email" disabled="disabled" value="不可用文本框" /> <br/>
        可用元素: <input name="che" value="可用文本框" /> <br/>
        不可用元素: <input name="name" disabled="disabled" value="不可用文本框" /> <br/>
        <br/>
        多选框: <br/>
        <input type="checkbox" name="newsletter" checked="checked" value="test1" />test1
        <input type="checkbox" name="newsletter" value="test2" />test2
        <input type="checkbox" name="newsletter" value="test3" />test3
        <input type="checkbox" name="newsletter" checked="checked" value="test4" />test4
        <input type="checkbox" name="newsletter" value="test5" />test5
        <br/><br/>
        下拉列表1: <br/>
        <select name="test" multiple="multiple" style="height: 100px">
            <option>浙江</option>
            <option selected="selected">湖南</option>
            <option>北京</option>
            <option selected="selected">天津</option>
            <option>广州</option>
            <option>湖北</option>
        </select>
        <br/><br/>
        下拉列表2: <br/>
        <select name="test2">
            <option>浙江</option>
            <option>湖南</option>
            <option selected="selected">北京</option>
            <option>天津</option>
            <option>广州</option>
            <option>湖北</option>
        </select>
    </form>
    
    
    </body>
    
    <script type="text/javascript">
    
       /**
       * 1.基本选择器
        *
        *       #id         根据给定的id匹配一个元素         返回单个元素     $("#test")选取id为test的元素
        *       .class      根据给定的类名匹配元素           返回集合元素     $(".test")选取所有class为test的元素
        *       element     根据给定的元素名匹配元素         返回集合元素     $("p")选取所有的<p>元素
        *       *           匹配所有的元素                  返回集合元素     $("*")选取所有的元素
        *       selector1,
        *       selector2,  将每一个选择器匹配的元素         返回集合元素     $("div, span, p.myClass")选取所有<div>,
        *       ......,     合并后一起返回                                 <span>和拥有class为myClass的<p>标签的一组元素
        *       selectorN
       * */
        //改变id为one的元素的背景色
        //$("#one").css("background", "#bbffaa");
    
        //改变class为mini的所有元素的背景色
        //$(".mini").css("background", "#bbffaa");
    
        //改变元素名称是<div>的所有元素的背景色
        //$("div").css("background", "#bbffaa");
    
        //改变所有元素的背景色
        //$("*").css("background", "#bbffaa");
    
        //改变所有span元素和id为two的元素的背景色
        //$("span, #two").css("background", "#bbffaa");
    
        /**
        * 2.层次选择器
         *
         *      $("ancestor descendant")    选取ancestor元素里的所有descendant(后代)元素        返回集合元素      $("div span")选取<div>里所有的<span>元素
         *      $("parent > child")         选取patent元素下的child(子)元素                    返回集合元素      $("div > span")选取<div>元素下元素名是<span>的子元素
         *      $("prev + next")            选取紧接在prev元素后的next元素                     返回集合元素      $(".one + div")选取class为one的下一个<div>元素
         *      $("prev ~ siblings")        选取prev元素之后的所有siblings元素                 返回集合元素      $("#two ~ div")选取id为two的元素后面的所有<div>同辈元素
        * */
        //改变body内所有div的背景色---可以包括多层继承关系
        //$("body div").css("background", "#bbffaa");
    
        //改变body内子div元素的背景色----仅包括一层继承关系
        //$("body > div").css("background", "#bbffaa");
    
        //改变class为one的下一个div同辈元素的背景色
        //$(".one + div").css("background", "#bbffaa");
    
        //改变id为two的元素后面的所有div同辈元素的背景色
        //$("#two ~ div").css("background", "#bbffaa");
    
        /**
         * 总结:在层次选择器中,第1和第2个选择器比较常用,而后面的两个因为在jQuery里可以使用更加简单的方法替代,所以使用几率较小。
         *
         * 1.可以使用next()方法来代替$("prev + next")选择器----即$(".one + div") == $(".one").next("div")
         * 2.可以使用nextAll()方法来代替$("prev ~ siblings")选择器----即$(".one ~ div") == $(".one").nextAll("div")
         *
         *
         * tips:
         *  siblings()方法与$("prev ~ siblings")选择器的比较:
         *      $("#prev ~ div")选择器只能选择"prev"元素后面的同辈<div>元素
         *      而siblings()方法与前后位置无关,只要是同辈节点都能匹配
         * */
    
    
        /**
         * 3.过滤选择器
         *
         *  过滤选择器主要是通过特定的过滤规则来筛选出所需的DOM元素,过滤规则与CSS中的伪类选择器语法相同,即选择器都以冒号(:)开头。
         *  按照不同的过滤规则,过滤选择器可以分为基本过滤器、内容过滤器、可见性过滤器、属性过滤器、子元素过滤器和表单对象属性过滤器
         * */
    
        /**
         * 3.1.基本过滤器
         *      :first          选取第一个元素                          返回单个元素       $("div:first")选取所有<div>元素中第1个<div>元素
         *      :last           选取最后一个元素                        返回单个元素       $("div:last")选取所有<div>元素中最后一个<div>元素
         *      :not(selector)  去除所有与给定选择器匹配的元素            返回集合元素       $("input:not(.myClass)")选取class不是myClass的<input>元素
         *      :even           选取索引是偶数的所有元素,索引从0开始      返回集合元素       $("input:even")选取索引是偶数的<input>元素
         *      :odd            选取索引是奇数的所有元素,索引从0开始      返回集合元素       $("input:odd")选取索引是奇数的<input>元素
         *      :eq(index)      选取索引等于index的元素,索引从0开始      返回单个元素       $("input:eq(1)")选取索引等于1的<input>元素
         *      :gt(index)      选取索引大于index的元素,索引从0开始      返回集合元素       $("input:gq(1)")选取索引大于1的<input>元素(大于1,不包括1)
         *      :lt(index)      选取索引小于index的元素,索引从0开始      返回集合元素       $("input:lq(1)")选取索引小于1的<input>元素(小于1,不包括1)
         *      :header         选取所有的标题元素,例如h1,h2等          返回集合元素       $(":header")选取网页中所有的<h1>,<h2>,<h3>......
         *      :animated       选取当前正在执行动画的元素               返回集合元素        $("div:animated")选取正在执行动画的<div>元素
         *      :focus          选取当前获取焦点的元素                   返回集合元素        $(":focus")选取当前获取焦点的元素
         * */
        //改变第1个<div>元素的背景色
        //$("div:first").css("background", "#bbffaa");
    
        //改变最后一个<div>元素的背景色
        //$("div:last").css("background", "#bbffaa");
    
        //改变class不为one的<div>元素的背景色
        //$("div:not(.one)").css("background", "#bbffaa");
    
        //改变索引值为偶数的<div>元素的背景色
        //$("div:even").css("background", "#bbffaa");
    
        //改变索引值为奇数的<div>元素的背景色
        //$("div:odd").css("background", "#bbffaa");
    
        //改变索引值等于3的<div>元素的背景色
        //$("div:eq(3)").css("background", "#bbffaa");
    
        //改变索引值大于3的<div>元素的背景色
        //$("div:gt(3)").css("background", "#bbffaa");
    
        //改变索引值小于3的<div>元素的背景色
        //$("div:lt(3)").css("background", "#bbffaa");
    
        //改变所有标题元素,例如<h1>,<h2>,<h3>......这些元素的背景色
        //$(":header").css("background", "#bbffaa");
    
        //改变当前正在执行动画的元素的背景色
        //$(":animated").css("background", "#bbffaa");
    
        //改变当前获取焦点的元素的背景色
        //$(":focus").css("background", "#bbffaa");
    
    
        /**
         * 3.2.内容过滤器
         *
         *      :contains(text)     选取含有文本内容为"text"的元素      返回集合元素     $("div:contains('我')")选取含有文本"我"的<div>元素
         *      :empty              选取不包含子元素或文本的空元素       返回集合元素     $("div:empty")选取不包含子元素(包括文本元素)的<div>元素
         *      :has(selector)      选取含有选择器所匹配的元素的元素     返回集合元素     $("div:has(p)")选取含有<p>元素的<div>元素
         *      :parent             选取含有子元素或者文本的元素        返回集合元素     $("div:parent")选取拥有子元素(包括文本元素)的<div>元素
         * */
    
        //改变含有文本"di"的<div>元素的背景色
        //$("div:contains(di)").css("background", "#bbffaa");
    
        //改变不包含子元素(包括文本元素)的<div>空元素的背景色
        //$("div:empty").css("background", "#bbffaa");
    
        //改变含有class为mini元素的<div>元素的背景色
        //$("div:has(.mini)").css("background", "#bbffaa");
    
        //改变含有子元素(包括文本元素)的<div>元素的背景色
        //$("div:parent").css("background", "#bbffaa");
    
    
        /**
         * 3.3.可见性过滤选择器
         *
         *      :hidden     选取所有不可见的元素      返回集合元素      $(":hidden")选取所有不可见的元素。包括<input type="hidden" />, <div style="display:none;">和<div style="visibility:hidden;">等元素。如果指向选取<input>元素,可以使用$("input:hidden")
         *      :visible    选取所有可见的元素       返回集合元素       $("div:visible")选取所有可见的<div>元素
         * */
    
        //改变所有可见的<div>元素的背景色
        //$("div:visible").css("background", "#bbffaa");
    
        //显示隐藏的<div>元素
        //$("div:hidden").show(3000);
    
    
        /**
         * 3.4.属性过滤选择器
         *
         *      [attribute]                 选取拥有此属性的元素                                返回集合元素      $("div[id]")选取拥有属性id的<div>元素
         *      [attribute=value]           选取属性的值为value的元素                           返回集合元素      $("div[title=test]")选取属性title为"test"的<div>元素
         *      [attribute!=value]          选取属性的值不等于value的元素                       返回集合元素       $("div[title!=test]")选取属性title不等于"test"的<div>元素(注意:没有属性title的<div>元素也会被选取)
         *      [attribute^=value]          选取属性的值以value开始的元素                       返回集合元素      $("div[title^=test]")选取属性title以"test"开始的<div>元素
         *      [attribute$=value]          选取属性的值以value结束的元素                       返回集合元素      $("div[title$=test]")选取属性title以"test"结束的<div>元素
         *      [attribute*=value]          选取属性的值含有value的元素                        返回集合元素      $("div[title*=test]")选取属性title含有"test"的<div>元素
         *      [attribute|=value]          选取属性等于给定的字符串或以该字符串为前缀的元素      返回集合元素      $("div[title|='en']")选取属性title等于en或以en为前缀(该字符串后跟一个连字符'_')的<div>元素
         *      [attribute~=value]          选取属性用空格分隔的值中包含一个给定的值的元素        返回集合元素      $("div[title~='uk']")选取属性title用空格分隔的值中包含uk的<div>元素
         *      [attribute1][attribute2]    用属性选择器合并成一个复合属性选择器,满足多个条件。   返回集合元素      $("div[id][title$='test']")选取拥有属性id,并且属性title以"test"结束的<div>元素
         *      [attributeN]                每选择一次,缩小一次范围。
         * */
    
        //改变含有属性title的<div>的背景色
        //$("div[title]").css("background", "#bbffaa");
    
        //改变属性title值等于"test"的<div>元素的背景色
        //$("div[title=test]").css("background", "#bbffaa");
    
        //改变属性title值不等于"test"的<div>元素的背景色
        //$("div[title!=test]").css("background", "#bbffaa");
    
        //改变属性title值以"te"开始的<div>元素的背景色
        //$("div[title^=te]").css("background", "#bbffaa");
    
        //改变属性title值以"est"结束的<div>元素的背景色
        //$("div[title$=est]").css("background", "#bbffaa");
    
        //改变属性title值含有"es"的<div>元素的背景色
        //$("div[title*=es]").css("background", "#bbffaa");
    
        //改变含有属性id,并且属性title值含有"es"的<div>元素的背景色
        //$("div[id][title*=es]").css("background", "#bbffaa");
    
        //改变属性title值以"en"开始的<div>元素的背景色
        //$("div[title^=en]").css("background", "#bbffaa");
    
        //改变属性title值包含"en"的<div>元素的背景色
        //$("div[title*=en]").css("background", "#bbffaa");
    
        //改变属性title值以"en"结束的<div>元素的背景色
        //$("div[title$=en]").css("background", "#bbffaa");
    
        //改变属性title值等于"en"或以"en"为前缀(该字符串后跟一个连字符'_')<div>元素的背景色
        //$("div[title|=en]").css("background", "#bbffaa");
    
        //改变属性title用空格分隔的值中包含字符"uk"的<div>元素的背景色
        //$("div[title~=uk]").css("background", "#bbffaa");
    
    
        /**
         * 3.5.子元素过滤选择器
         *
         *      :nth-child(index/even/odd/equation)     选取每个父元素下的第index个子元素或者奇偶元素(index从1算起)        返回集合元素      :eq(index)只匹配一个元素,而:nth-child将为每个父元素匹配子元素,并且:nth-child(index)的index是从1开始的,而:eq(index)是从0开始的
         *      :first-child                            选取每个父元素的第1个子元素                                      返回集合元素      :first只返回单个元素,而:first-child选择符将为每个父元素匹配第1个子元素。例如$("ul li:first-child")选取每个<ul>中第1个<li>元素
         *      :last-child                             选取每个父元素的最后1个子元素                                    返回集合元素      :last只返回单个元素,而:last-child选择符将为每个父元素匹配最后1个子元素。例如$("ul li:last-child")选取每个<ul>中最后1个<li>元素
         *      :only-child                             如果某个元素是它父元素中唯一的子元素,那么将会被匹配。              返回集合元素      $("ul li:only-child")在<ul>中选取唯一子元素的<li>元素
         *                                              如果父元素中含有其他元素,则不会被匹配。
         *
         *  --------------------------------------------------------------------------------------------------------------------------------------------------------
         *      :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开始)
         * */
    
        //改变每个class为one的<div>父元素下的第2个子元素的背景色
        //$("div.one :nth-child(2)").css("background", "#bbffaa");
    
        //改变每个class为one的<div>父元素下的第一个子元素的背景色
        //$("div.one :first-child").css("background", "#bbffaa");
    
        //改变每个class为one的<div>父元素下的最后一个子元素的背景色
        //$("div.one :last-child").css("background", "#bbffaa");
    
        //如果class为one的<div>父元素下只有一个子元素,那么则改变这个子元素的背景色
        //$("div.one :only-child").css("background", "#bbffaa");
    
    
        /**
         * 3.6.表单对象属性过滤选择器
         *
         *      :enabled        选取所有可用的元素                   返回集合元素      $("#form1 :enabled")选取id为form1的表单内所有可用的元素
         *      :disabled       选取所有不可用的元素                 返回集合元素      $("#form1 :disabled")选取id为form1的表单内所有不可用的元素
         *      :checked        选取所有被选中的元素(单选框,复选框)   返回集合元素      $("input:checked")选取所有被选中的<input>元素
         *      :selected       选取所有被选中的选项元素(下拉列表)     返回集合元素      $("select option :selected")选取所有被选中的选项元素
         *
         * */
    
        //改变表单内可用的<input>元素的值
        //$("#form1 input:enabled").val("这里变化了!");
    
        //改变表单内不可用<input>元素的值
        //$("#form1 input:disabled").val("这里变化了!");
    
        //获取多选框选中的个数
        //$("input :checked").length;
    
        //获取下拉选择框选中的内容
        //$("select :selected").text();
    
    
        /**
         * 表单选择器
         *  为了使用户能够更加灵活的操作表单,jQuery中专门加入了表单选择器。利用这个选择器,能及其方便地获取到表单的某个或某类型的元素
         *
         *  :input      选取所有的<input>、<textarea>、<select>和<button>元素     返回集合元素     $(":input")选取所有<input>、<textarea>、<select>和<button>元素
         *  :text       选取所有的单行文本框                                      返回集合元素     $(":text")选取所有的单行文本框
         *  :password   选取所有的密码框                                          返回集合元素    $(":password")选取所有的密码框
         *  :radio      选取所有的单选框                                          返回集合元素    $(":radio")选取所有的单选框
         *  :checkbox   选取所有的多选框                                          返回集合元素    $(":checkbox")选取所有的多选框
         *  :submit     选取所有的提交按钮                                        返回集合元素     $(":submit")选取所有的提交按钮
         *  :image      选取所有的图像按钮                                        返回集合元素     $(":image")选取所有的图像按钮
         *  :reset      选取所有的重置按钮                                        返回集合元素     $(":reset")选取所有的重置按钮
         *  :button     选取所有的按钮                                            返回集合元素     $(":button")选取所有的按钮
         *  :file       选取所有的上传域                                          返回集合元素     $(":file")选取所有的上传域
         *  :hidden     选取所有不可见元素                                        返回集合元素     $(":hidden")选取所有不可见的元素
         *
         *
         * */
    
    </script>
    
    </html>
  • 相关阅读:
    Leetcode 15 3Sum
    Leetcode 383 Ransom Note
    用i个点组成高度为不超过j的二叉树的数量。
    配对问题 小于10 1.3.5
    字符矩阵的旋转 镜面对称 1.2.2
    字符串统计 连续的某个字符的数量 1.1.4
    USACO twofive 没理解
    1002 All Roads Lead to Rome
    USACO 5.5.1 求矩形并的周长
    USACO 5.5.2 字符串的最小表示法
  • 原文地址:https://www.cnblogs.com/dreamfree/p/4176570.html
Copyright © 2011-2022 走看看