首页 > 代码库 > 锋利的jQuery读书笔记---选择器

锋利的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>

 

锋利的jQuery读书笔记---选择器