jQuery选择器

一、选择器

1、prev + next

HTML 代码:
<form>
  <label>Name:</label>
  <input name="name" />
  <fieldset>
      <label>Newsletter:</label>
      <input name="newsletter" />
 </fieldset>
</form>
<input name="none" />

jQuery 代码:
$("label + input")

结果:
[ <input name="name" />, <input name="newsletter" /> ]

2、prev ~ siblings (一个选择器,并且它作为第一个选择器的同辈)

//匹配 prev 元素之后的所有 siblings 元素

HTML 代码:
<form> <label>Name:</label> <input name="name" /> <fieldset> <label>Newsletter:</label> <input name="newsletter" /> </fieldset> </form> <input name="none" /> jQuery 代码: $("form ~ input") 结果: [ <input name="none" /> ]

3、:not(selector) (去除所有与给定选择器匹配的元素)

HTML 代码:
<input name="apple" />
<input name="flower" checked="checked" />

jQuery 代码:
$("input:not(:checked)")

结果:
[ <input name="apple" /> ]

4、:gt(index) (匹配所有大于给定索引值的元素)

//查找第二第三行,即索引值是1和2,也就是比0大
HTML 代码:
<table> <tr><td>Header 1</td></tr> <tr><td>Value 1</td></tr> <tr><td>Value 2</td></tr> </table> jQuery 代码: $("tr:gt(0)") 结果: [ <tr><td>Value 1</td></tr>, <tr><td>Value 2</td></tr> ]

5、:lt(index) (匹配所有小于给定索引值的元素)

查找第一第二行,即索引值是0和1,也就是比2小

HTML 代码:
<table>
  <tr><td>Header 1</td></tr>
  <tr><td>Value 1</td></tr>
  <tr><td>Value 2</td></tr>
</table>

jQuery 代码:
$("tr:lt(2)")

结果:
[ <tr><td>Header 1</td></tr>, <tr><td>Value 1</td></tr> ]

6、:lang(language)   

选择指定语言的所有元素。

:lang选择器,匹配有一个语言值等于所提供的语言代码,或以提供的语言代码开始,后面马上跟一个“ - ”的元素。例如,选择器$("div:lang(en)")将匹配<div lang="en"> and <div lang="en-us">(和他们的后代<div>),但不包括<div lang="fr">

对于HTML元素,语言值由lang属性决定,也可能由来自meta元素或HTTP头信息决定。

选择所有<P> 的语言属性:
$("p:lang(it)")

7、:header (匹配如 h1, h2, h3之类的标题元素)

给页面内所有标题加上背景色

HTML 代码:
<h1>Header 1</h1>
<p>Contents 1</p>
<h2>Header 2</h2>
<p>Contents 2</p>

jQuery 代码:
$(":header").css("background", "#EEE");

结果:
[ <h1 style="background:#EEE;">Header 1</h1>, <h2 style="background:#EEE;">Header 2</h2> ]

8、:animated (匹配所有正在执行动画效果的元素)

只有对不在执行动画效果的元素执行一个动画特效

HTML 代码:
<button id="run">Run</button><div></div>

jQuery 代码:
$("#run").click(function(){
  $("div:not(:animated)").animate({ left: "+=20" }, 1000);
});

9、:focus 

匹配当前获取焦点的元素。

如同其他伪类选择器(那些以":"开始),建议:focus前面用标记名称或其他选择;否则,通用选择("*")是不言而喻的。换句话说,$(':focus')等同为$('*:focus')。如果你正在寻找当前的焦点元素,$( document.activeElement )将检索,而不必搜索整个DOM树。

添加一个"focused"的类名给那些有focus方法的元素

css 代码:
.focused {
    background: #abcdef;
}

html 代码:
<div id="content">
    <input tabIndex="1">
    <input tabIndex="2">
    <select tabIndex="3">
        <option>select menu</option>
    </select>
    <div tabIndex="4">
        a div
    </div>
</div>

jQuery 代码:
$( "#content" ).delegate( "*", "focus blur", function( event ) {
    var elem = $( this );
    setTimeout(function() {
       elem.toggleClass( "focused", elem.is( ":focus" ) );
    }, 0);
});

10、:root 

选择该文档的根元素。

在HTML中,文档的根元素,和$(":root")选择的元素一样, 永远是<html>元素。

设置<html>背景颜色为黄色

$(":root").css("background-color","yellow");

11、:target

选择由文档URI的格式化识别码表示的目标元素。

如果文档的URI包含一个格式化的标识符,或hash(哈希), 然后:target选择器将匹配ID和标识符相匹配的元素。  例如,给定的URI http://example.com/#foo, $( "p:target" ),将选择<p id="foo">元素。

12、:contains(text)  (匹配包含给定文本的元素)

查找所有包含 "John" 的 div 元素

HTML 代码:
<div>John Resig</div>
<div>George Martin</div>
<div>Malcom John Sinclair</div>
<div>J. Ohn</div>

jQuery 代码:
$("div:contains('John')")

结果:
[ <div>John Resig</div>, <div>Malcom John Sinclair</div> ]

13、:empty (匹配所有不包含子元素或者文本的空元素)

查找所有不包含子元素或者文本的空元素

HTML 代码:
<table>
  <tr><td>Value 1</td><td></td></tr>
  <tr><td>Value 2</td><td></td></tr>
</table>

jQuery 代码:
$("td:empty")

结果:
[ <td></td>, <td></td> ]

14、:has(selector)  (匹配含有选择器所匹配的元素的元素)

给所有包含 p 元素的 div 元素添加一个 text 类

HTML 代码:
<div><p>Hello</p></div>
<div>Hello again!</div>

jQuery 代码:
$("div:has(p)").addClass("test");

结果:
[ <div class="test"><p>Hello</p></div> ]

15、[attribute^=value] (匹配给定的属性是以某些值开始的元素)

查找所有 name 以 'news' 开始的 input 元素

HTML 代码:
<input name="newsletter" />
<input name="milkman" />
<input name="newsboy" />

jQuery 代码:
$("input[name^='news']")

结果:
[ <input name="newsletter" />, <input name="newsboy" /> ]

16、[attribute$=value]  (匹配给定的属性是以某些值结尾的元素)

查找所有 name 以 'letter' 结尾的 input 元素

HTML 代码:
<input name="newsletter" />
<input name="milkman" />
<input name="jobletter" />

jQuery 代码:
$("input[name$='letter']")

结果:
[ <input name="newsletter" />, <input name="jobletter" /> ]

17、[attribute*=value]  (匹配给定的属性是以包含某些值的元素)

查找所有 name 包含 'man' 的 input 元素

HTML 代码:
<input name="man-news" />
<input name="milkman" />
<input name="letterman2" />
<input name="newmilk" />

jQuery 代码:
$("input[name*='man']")

结果:
[ <input name="man-news" />, <input name="milkman" />, <input name="letterman2" /> ]

 

 

 

 

 

 

 

posted @ 2016-12-27 23:37  caojiayan  阅读(397)  评论(0编辑  收藏  举报