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>
  • 相关阅读:
    java多线程实例
    Python——文件操作
    Python—— *与** 参数说明
    Python——序列
    多元线性回归
    Gson转换时,Double转式化
    ftp上传下载
    发送邮件
    jsonp的使用
    用CSS3和Canvas来画网格
  • 原文地址:https://www.cnblogs.com/dreamfree/p/4176570.html
Copyright © 2011-2022 走看看