jQuery学习之旅 Item2 选择器【二】

最后更新于:2022-04-01 11:32:04

这里接着上一个Item1 把jQuery的选择器讲完。主要有:属性过滤器和子元素过滤器 **点击”名称”会跳转到此方法的jQuery官方说明文档.** ### 5. 属性过滤器 Attribute Filters <table border="1" cellspacing="1" cellpadding="5"><tbody><tr><td width="238" valign="top">名称</td><td width="222" valign="top">说明</td><td width="312" valign="top">举例</td></tr><tr><td width="242" valign="top"><a href="http://docs.jquery.com/Selectors/attributeHas#attribute">[attribute]</a></td><td width="220" valign="top">匹配包含给定属性的元素</td><td width="312" valign="top">查找所有含有 id 属性的 div 元素: <br/>$(“div[id]”)</td></tr><tr><td width="245" valign="top"><a href="http://docs.jquery.com/Selectors/attributeEquals#attributevalue">[attribute=value]</a></td><td width="219" valign="top">匹配给定的属性是某个特定值的元素</td><td width="312" valign="top">查找所有 name 属性是 newsletter 的 input 元素: <br/>$(“input[name=’newsletter’]”).attr(“checked”, true);</td></tr><tr><td width="246" valign="top"><a href="http://docs.jquery.com/Selectors/attributeNotEqual#attributevalue">[attribute!=value]</a></td><td width="218" valign="top">匹配给定的属性是不包含某个特定值的元素</td><td width="311" valign="top">查找所有 name 属性不是 newsletter 的 input 元素: <br/>$(“input[name!=’newsletter’]”).attr(“checked”, true);</td></tr><tr><td width="248" valign="top"><a href="http://docs.jquery.com/Selectors/attributeStartsWith#attributevalue">[attribute^=value]</a></td><td width="217" valign="top">匹配给定的属性是以某些值开始的元素</td><td width="311" valign="top">$(“input[name^=’news’]”)</td></tr><tr><td width="249" valign="top"><a href="http://docs.jquery.com/Selectors/attributeEndsWith#attributevalue">[attribute$=value]</a></td><td width="217" valign="top">匹配给定的属性是以某些值结尾的元素</td><td width="311" valign="top">查找所有 name 以 ‘letter’ 结尾的 input 元素: <br/>$ (“input[name =’letter’]”)</td></tr><tr><td width="249" valign="top"><a href="http://docs.jquery.com/Selectors/attributeContains#attributevalue">[attribute*=value]</a></td><td width="217" valign="top"><p>匹配给定的属性是以包含某些值的元素</p></td><td width="311" valign="top"><p>查找所有 name 包含 ‘man’ 的 input 元素: <br/>$ (“input[name * =’man’]”)</p></td></tr><tr><td width="249" valign="top"><a href="http://docs.jquery.com/Selectors/attributeMultiple#attributeFilter1attributeFilter2attributeFilterN">[attributeFilter1][attributeFilter2][attributeFilterN]</a></td><td width="217" valign="top">复合属性选择器,需要同时满足多个条件时使用。</td><td width="313" valign="top">找到所有含有 id 属性,并且它的 name 属性是以 man 结尾的: <br/> $ (“input[id][name =’man’]”)</td></tr></tbody></table> ~~~ <input type=”text” name=”username” value=”zhangsan” /> ~~~ - $ (“[name]”) —— 找到有name属性的元素 - $(“[value=tom]”) —— 找到有value属性的元素,并且value的值等于tom - $(“[value^=to]”) —— 找到有value属性的元素,并且value的值是以to开始 - $(“[value$=ab]”) —— 找到有value属性的元素,并且value的值是以ab结尾 - $(“[value*=ab]”) —— 找到有value属性的元素,并且value的值里边包含ab信息 - $(“[value!=ab]”) ①找到有value属性的元素,并且value的值不等于ab ②或者是没有value属性元素 ~~~ <input value=”123”><input value=”ab”> ~~~ - $([name][class=^a][value!=123] ) —— 符合选择器,多个条件同时满足(并且,交集) ~~~ <script> function f1(){ //$("[class]").css('color','red');//有class属性 //$("[id=hello]").css("color","blue");//id=hello的元素 //$("[class^=app]").css("color",'blue');//class内容以app开始 //$("[class$=e]").css("color","red"); //class内容以e结尾 //$("[class*=p]").css("color","red"); //class内容包含p //class内容不为app123 或 没有class属性的 //$("[class!=app123]").css("color","blue"); //有id属性和class属性并且class不等于app123 //$("[id][class!=app123][class]").css("color",'blue'); //获得input元素,并且有class属性,内容以app开始 $("[class=app123]input").css("color",'blue'); //$("input:eq(2)").css("color",'blue'); } </script> <body> <div class="apple">apple</div> <div class="app123">banana</div> <input type="text" value="tom" id="hello" class="peare"><br /> <input type="text" value="jack" class="app123"><br /> <input type="text" value="linken" class="apple"><br /> <input type="button" value="触发" onclick="f1()"> <p>I am bread</p> </body> ~~~ ### 6. 子元素过滤器 Child Filters <table border="1" cellspacing="1" cellpadding="5"><tbody><tr><td width="256" valign="top">名称</td><td width="223" valign="top">说明</td><td width="290" valign="top">举例</td></tr><tr><td width="266" valign="top"><a href="http://docs.jquery.com/Selectors/nthChild#index">:nth-child(index/even/odd/equation)</a></td><td width="219" valign="top"><p>匹配其父元素下的第N个子或奇偶元素</p><p>‘:eq(index)’ 只匹配一个元素,而这个将为每一个父元素匹配子元素。:nth-child从1开始的,而:eq()是从0算起的! </p><p>可以使用: <br/>nth-child(even) <br/>:nth-child(odd) <br/>:nth-child(3n) <br/>:nth-child(2) <br/>:nth-child(3n+1) <br/>:nth-child(3n+2)</p></td><td width="284" valign="top">在每个 ul 查找第 2 个li: <br/>$(“ul li:nth-child(2)”)</td></tr><tr><td width="276" valign="top"><a href="http://docs.jquery.com/Selectors/firstChild">:first-child</a></td><td width="216" valign="top"><p>匹配第一个子元素</p><p>‘:first’ 只匹配一个元素,而此选择符将为每个父元素匹配一个子元素</p></td><td width="279" valign="top">在每个 ul 中查找第一个 li: <br/>$(“ul li:first-child”)</td></tr><tr><td width="284" valign="top"><a href="http://docs.jquery.com/Selectors/lastChild">:last-child</a></td><td width="214" valign="top"><p>匹配最后一个子元素</p><p>‘:last’只匹配一个元素,而此选择符将为每个父元素匹配一个子元素</p></td><td width="275" valign="top">在每个 ul 中查找最后一个 li: <br/>$(“ul li:last-child”)</td></tr><tr><td width="290" valign="top"><a href="http://docs.jquery.com/Selectors/onlyChild">:only-child</a></td><td width="212" valign="top"><p>如果某个元素是父元素中唯一的子元素,那将会被匹配</p><p>如果父元素中含有其他元素,那将不会被匹配。</p></td><td width="277" valign="top">在 ul 中查找是唯一子元素的 li: <br/>$(“ul li:only-child”)</td></tr></tbody></table> **1 :nth-child(index/even/odd)** 匹配其父元素下的第N个子或奇偶元素 ‘:eq(index)’ 只匹配一个元素, 而这个将为每一个父元素匹配子元素。 :nth-child从1开始的,而:eq()是从0算起的! **2 :first-child** 匹配其父元素下的第一个子元素 **3 :last-child** 匹配其父元素下的最后一个子元素 **4 :only-child** 如果某个元素是父元素中唯一的子元素,那将会被匹配 容易与“简单过滤选择器”混淆 :first :eq() :last ~~~ <script> function f1(){ //把全部的li汇合到一起找到第一个 $("li:first").css("color","red"); //一个结果 //first-child匹配其父元素下的第一个子元素 $("li:first-child").css("color","blue"); //两个结果 $("li:last-child").css("color","red");//两个结果 $("li:nth-child(2)").css("background-color","lightblue"); //两个结果 $("li:nth-child(even)").css("background-color","lightblue"); $("li:nth-child(odd)").css("background-color","lightblue"); //找到其父元素只有一个子元素的元素 $("li:only-child").css('color','red'); } </script> <body> <ul> <li>四</li> <li>大</li> <li>家</li> <li>族</li> </ul> <ul> <li>乔</li> <li>家</li> <li>大</li> <li>院</li> </ul> <ul> <li>老大</li> </ul> <input type="button" value="触发" onclick="f1()"> </body> ~~~ **子元素选择器 和 简单过滤选择器使用 区别:** 1. 简单过滤选择器使用 - a) 把全部元素放到一起统一使用 - b) 下标从0开始计算 2.子元素选择器 - a) 每个元素的父元素看成独立的单位进行运算 - b) 下标从1开始计算
';