jQuery-强大的jQuery选择器 (详解)[转]

1. 基础选择器 Basics

 

名称说明举例
#id根据元素Id选择$("divId") 选择ID为divId的元素
element根据元素的名称选择,$("a") 选择所有<a>元素
.class根据元素的css类选择$(".bgRed") 选择所用CSS类为bgRed的元素
*选择所有元素$("*")选择页面所有元素
selector1, 
selector2, 
selectorN
可以将几个选择器用","分隔开然后再拼成一个选择器字符串.会同时选中这几个选择器匹配的内容.$("#divId, a, .bgRed")

 

 

 

2.层次选择器 Hierarchy

 

名称说明举例
ancestor descendant使用"form input"的形式选中form中的所有input元素.即ancestor(祖先)为from, descendant(子孙)为input.$(".bgRed div") 选择CSS类为bgRed的元素中的所有<div>元素.
parent > child选择parent的直接子节点child.  child必须包含在parent中并且父类是parent元素.$(".myList>li") 选择CSS类为myList元素中的直接子节点<li>对象.
prev + nextprev和next是两个同级别的元素. 选中在prev元素后面的next元素.$("#hibiscus+img")选在id为hibiscus元素后面的img对象.
prev ~ siblings  选择prev后面的根据siblings过滤的元素 
注:siblings是过滤器
$("#someDiv~[title]")选择id为someDiv的对象后面所有带有title属性的元素

 

 

 

3.基本过滤器 Basic Filters

 

名称说明举例
:first匹配找到的第一个元素查找表格的第一行:$("tr:first")
:last匹配找到的最后一个元素查找表格的最后一行:$("tr:last")
:not(selector)去除所有与给定选择器匹配的元素查找所有未选中的 input 元素: $("input:not(:checked)")
:even匹配所有索引值为偶数的元素,从 0 开始计数查找表格的1、3、5...行:$("tr:even")
:odd匹配所有索引值为奇数的元素,从 0 开始计数查找表格的2、4、6行:$("tr:odd")
:eq(index)匹配一个给定索引值的元素 
注:index从 0 开始计数
查找第二行:$("tr:eq(1)")
:gt(index)匹配所有大于给定索引值的元素 
注:index从 0 开始计数
查找第二第三行,即索引值是1和2,也就是比0大:$("tr:gt(0)")
:lt(index)选择结果集中索引小于 N 的 elements 
注:index从 0 开始计数
查找第一第二行,即索引值是0和1,也就是比2小:$("tr:lt(2)")
:header选择所有h1,h2,h3一类的header标签.给页面内所有标题加上背景色: $(":header").css("background", "#EEE");
:animated匹配所有正在执行动画效果的元素只有对不在执行动画效果的元素执行一个动画特效:

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

 

 

 

4. 内容过滤器 Content Filters

 

名称说明举例
:contains(text)匹配包含给定文本的元素查找所有包含 "John" 的 div 元素:$("div:contains('John')")
:empty匹配所有不包含子元素或者文本的空元素查找所有不包含子元素或者文本的空元素:$("td:empty")
:has(selector)匹配含有选择器所匹配的元素的元素给所有包含 p 元素的 div 元素添加一个 text 类: $("div:has(p)").addClass("test");
:parent匹配含有子元素或者文本的元素查找所有含有子元素或者文本的 td 元素:$("td:parent")

 

 

 

5.可见性过滤器  Visibility Filters

 

名称说明举例

:hidden

匹配所有的不可见元素

注:在1.3.2版本中, hidden匹配自身或者父类在文档中不占用空间的元素.如果使用CSS visibility属性让其不显示但是占位,则不输入hidden.

查找所有不可见的 tr 元素:$("tr:hidden")
:visible匹配所有的可见元素查找所有可见的 tr 元素:$("tr:visible")

 

6.属性过滤器 Attribute Filters

 

名称说明举例
[attribute]匹配包含给定属性的元素查找所有含有 id 属性的 div 元素: 
$("div[id]")
[attribute=value]匹配给定的属性是某个特定值的元素查找所有 name 属性是 newsletter 的 input 元素:
$("input[name='newsletter']").attr("checked", true);
[attribute!=value]匹配给定的属性是不包含某个特定值的元素查找所有 name 属性不是 newsletter 的 input 元素: 
$("input[name!='newsletter']").attr("checked", true);
[attribute^=value]匹配给定的属性是以某些值开始的元素$("input[name^='news']")
[attribute$=value]匹配给定的属性是以某些值结尾的元素查找所有 name 以 'letter' 结尾的 input 元素: 
$("input[name$='letter']")
[attribute*=value]

匹配给定的属性是以包含某些值的元素

查找所有 name 包含 'man' 的 input 元素: 
$("input[name*='man']")

[attributeFilter1][attributeFilter2][attributeFilterN]复合属性选择器,需要同时满足多个条件时使用。找到所有含有 id 属性,并且它的 name 属性是以 man 结尾的: 
$("input[id][name$='man']")

 

7.子元素过滤器 Child Filters

 

名称说明举例
:nth-child(index/even/odd/equation)

匹配其父元素下的第N个子或奇偶元素

':eq(index)' 只匹配一个元素,而这个将为每一个父元素匹配子元素。:nth-child从1开始的,而:eq()是从0算起的!

可以使用: 
nth-child(even) 
:nth-child(odd) 
:nth-child(3n) 
:nth-child(2) 
:nth-child(3n+1) 
:nth-child(3n+2)

在每个 ul 查找第 2 个li: 
$("ul li:nth-child(2)")
:first-child

匹配第一个子元素

':first' 只匹配一个元素,而此选择符将为每个父元素匹配一个子元素

在每个 ul 中查找第一个 li: 
$("ul li:first-child")
:last-child

匹配最后一个子元素

':last'只匹配一个元素,而此选择符将为每个父元素匹配一个子元素

在每个 ul 中查找最后一个 li: 
$("ul li:last-child")
:only-child

如果某个元素是父元素中唯一的子元素,那将会被匹配

如果父元素中含有其他元素,那将不会被匹配。

在 ul 中查找是唯一子元素的 li: 
$("ul li:only-child")

 

8.表单选择器 Forms 

 

名称说明解释
:input匹配所有 input, textarea, select 和 button 元素查找所有的input元素: 
$(":input")
:text匹配所有的文本框查找所有文本框: 
$(":text")
:password匹配所有密码框查找所有密码框: 
$(":password")
:radio匹配所有单选按钮查找所有单选按钮
:checkbox匹配所有复选框查找所有复选框: 
$(":checkbox")
:submit匹配所有提交按钮查找所有提交按钮: 
$(":submit")
:image

匹配所有图像域

匹配所有图像域: 
$(":image")
:reset匹配所有重置按钮查找所有重置按钮: 
$(":reset")
:button匹配所有按钮查找所有按钮: 
$(":button")
:file匹配所有文件域查找所有文件域: 
$(":file")

 

9.表单过滤器 Form Filters

 

名称说明解释
:enabled

匹配所有可用元素

查找所有可用的input元素: 
$("input:enabled")
:disabled匹配所有不可用元素查找所有不可用的input元素: 
$("input:disabled")
:checked匹配所有选中的被选中元素(复选框、单选框等,不包括select中的option)查找所有选中的复选框元素: 
$("input:checked")
:selected匹配所有选中的option元素查找所有选中的选项元素: 
$("select option:selected")

 

 



以jQuery(v1.3.2)为基础from:http://bbs.chinaandroid.com/showtopic-89.aspx

1).基本

·#id 根据给定的ID匹配一个元素。例如:$("#id")
·element 根据给定的元素名匹配所有元素。例如:$("div")
·.class 根据给定的类匹配元素。例如:$(".style1");
·* 匹配所有元素。例如:$("*")
·selector1,selector2,selectorN 将每一个选择器匹配到的元素合并后一起返回。例如:$("#id,div,.style1")

2).表单

·:button 匹配所有按钮。例如:$(":button")
·:checkbox 匹配所有复选框。例如:$(":checkbox")
·:file 匹配所有文件域。例如:$(":file")
·:hidden 匹配所有不可见元素,或者type为hidden的元素。例如:$("input:hidden")
·:image 匹配所有图像域。例如:$(":image")
·:input 匹配所有 input, textarea, select 和 button 元素。例如:$(":input")
·:password 匹配所有密码框。例如:$(":password")
·:radio 匹配所有单选按钮。例如:$(":radio")
·:reset 匹配所有重置按钮。例如:$(":reset")
·:submit 匹配所有提交按钮。例如:$(":submit")
·:text 匹配所有的单行文本框。例如:$(":text")
·:header 匹配如 h1, h2, h3之类的标题元素。例如:$(":header").css("background", "#EEE");

2.筛选条件

1).属性筛选

·[attribute*=value] 匹配给定的属性是以包含某些值的元素。例如:$("input[name*='man'")
·[attribute!=value] 匹配所有含有指定的属性,但属性不等于特定值的元素。例如:$(input[name!='man');
·[attribute$=value] 匹配给定的属性是以某些值结尾的元素。例如:$("input[name$='man']")
·[attribute=value] 匹配给定的属性是某个特定值的元素。例如:$("input[name='man']");
·[attribute] 匹配包含给定属性的元素。例如:$("div[id]")
·[attribute^=value] 匹配给定的属性是以某些值开始的元素。例如:$("input[name^='man']")
·[selector1][selector2][selectorN] 同时满足多个条件。例如:$("input[id][name$='man']")
·:hidden 匹配所有的不可见元素。例如:$("tr:hidden")
·:visible 匹配所有的可见元素。例如:$("tr:visible")
·:checked 匹配所有选中的被选中元素(复选框、单选框等,不包括select中的option)。例如:$("input:checked")
·:disabled 匹配所有不可用元素。例如:$("input:disabled")
·:enabled 匹配所有可用元素。例如:$("input:enabled")
·:selected 匹配所有选中的option元素。例如:$("select option:selected")

2).内容筛选

·:contains(text) 匹配包含给定文本的元素。例如:$("div:contains('John')")
·:empty 匹配所有不包含子元素或者文本的空元素。例如:$("td:empty")
·:has(selector) 匹配含有选择器所匹配的元素的元素。例如:$("div:has(p)");
·:parent 匹配含有子元素或者文本的元素。例如:$("td:parent")

3).层级筛选

·ancestor descendant 在给定的祖先元素下匹配所有的后代元素。例如:$("form input")
·parent > child 在给定的父元素下匹配所有的子元素。例如:$("form > input")
·prev + next 匹配所有紧接在 prev 元素后的 next 元素。例如:$("label + input")
·prev ~ siblings 匹配 prev 元素之后的所有 siblings 元素。例如:$("form ~ input")
·:first-child 匹配第一个子元素。例如:$("ul li:first-child")
·:last-child 匹配最后一个子元素。例如:$("ul li:last-child")
·:nth-child(index/even/odd/equation) 匹配其父元素下的第N个子或奇偶元素。例如:$("ul li:nth-child(2)")
·:only-child 如果某个元素是父元素中唯一的子元素,那将会被匹配。例如:$("ul li:only-child")

4).方法筛选

·:animated 匹配所有正在执行动画效果的元素。例如:$("div:animated");
·:eq(index) 匹配一个给定索引值的元素。例如:$("tr:eq(1)")
·:even 匹配所有索引值为偶数的元素,从 0 开始计数。例如:$("tr:even")
·:first 匹配找到的第一个元素。例如:$("tr:first")
·:gt(index) 匹配所有大于给定索引值的元素,从 0 开始计数。例如:$("tr:gt(0)")
·:last 匹配找到的最后一个元素。例如:$("tr:last")
·:lt(index) 匹配所有小于给定索引值的元素。例如:$("tr:lt(2)")
·:not(selector) 去除所有与给定选择器匹配的元素。例如:$("input:not(:checked)")
·:odd 匹配所有索引值为奇数的元素,从 0 开始计数。例如:$("tr:odd")

 

 

jquery对象访问:

1. each(callback):以每个匹配的元素作为上下文来执行一个函数,return false;停止循环;return true;跳至下一个循环。
来个实例 :              
$("img").each(function(){
       $(this).toggle("example");
})
        

2.size()与length相同,都是返回jquery对象中元素的个数。
   $("img").size();或$("img").length;

3.get():取得所有匹配的DOM元素集合(注意返回是dom对象,而非jquery对象)
$("img").get().reverse();

4.get(index):取得其中一个匹配的元素。index表示匹配第几个元素,可以让你操作一个实际的dom元素。
$("img").get(0);//得到第一个匹配的img元素
$(this).get(0)与$(this)[0]等价

5.index(subject):搜索与参数表示的对象匹配的元素,并返回相应元素的索引值。

选择器-基本:
selector1,selector2,selectorN将匹配到的元素合并后一起返回
$("div,span,p.myClass");

选择器-层级:
1.ancestor descendant在给定的祖先元素下匹配所有的后代元素
    $("div input");//div下所有input

2.parent > child 在给定的父元素下匹配所有的子元素
    $("div > input);//父元素下的子元素

3.prev + next 匹配所有紧接在prev元素后的next元素
$("div + span")//紧接在div后的span

4.prev ~ siblings 匹配prev元素之后的所有siblings元素
$("form ~ input")//找到所有与表单同辈的input元素


选择器-简单:
1.:first 匹配找到的第一个元素
$("tr:first")//查找表格中第一行

2.:last 匹配找到的最后一个元素
$("tr:last")//匹配找到的最后一个元素

3.:not(selector) 去除所有与给定选择器匹配的元素
   ps:jquery 1.3中,已支持复杂选择器了(例如::not(div a)和:not(div,a))
   $("input not(:checked)")//所有未被选中的input元素

4.:even 匹配所有索引值为偶数的元素,从0开始计数
   $("tr:even")//查找表格中偶数行

5.:odd匹配所有索引值为奇数的元素,从0开始计数
   $("tr:odd")//查找表格中奇数行

6.:eq(index)匹配一个给定索引值的元素
   $("tr:eq(1)")//查找第二行

7.:gt(index)匹配所有大于给定索引值的元素
   $("tr:gt(0)")//查找大于0的所有行

8.:lt(index)匹配所有小于给定索引值的元素
$("tr:lt(2)")//查找小于2的所有行

9.:header 匹配如h1,h2,h3之类的标题元素
   $(":header").css("background",red");//所有标题加上背景色

10.:animated 匹配所有正在执行动画效果的元素

选择器-内容:
1.:contains(text) 匹配包含给定文本的元素
   $("div:contains('aaa')")查找所有包含有aaa的div元素

2.:empty()匹配所有不包含子元素或文本的空元素
  
$("td:empty")

3.:has(selector)匹配含有选择器所匹配的元素的元素
  
$("div:has(p)").addClass("test");//给所有包含p元素的div元素添加一个text类

4.:parent匹配含有子元素或者文本的元素
   $("td:parent");//查找所有含有子元素或者文本的td元素

选择器-可见性:
1.:hidden匹配所有不可见元素,input元素的type属性为hidden的话也会被匹配
  
$("tr:hidden");//查找所有不可见的tr元素

2.:visible匹配所有可见元素
   $("tr:visible");//查找所有可见的tr元素

选择器-属性:
1.[attribute]匹配包含给定属性的元素
   
$("div[id]")//查找所有含有id属性的div元素

2.[attribute=value]匹配给定的属性是某个特定值的元素
   
$("input[name='username']")//查所所有name=username的input元素

3. [attribute!=value]匹配所有不含有指定属性,或者属性不等于特定值的元素
     此选择器等价于:not([attr=value]),要匹配含有特定属性但不等于特定值的元素,请使用[attr]:not([attr=value])
    $("input[name!='username']")//查找所有name!=username的input元素

4. [attribute^=value]匹配给定的属性是以某些值开始的元素
    $("input[name^='user'])//查找所有name以'newws'开始的input元素

5. [attribute$=value]匹配给定属性是以某些值结尾的元素
   $("input[name$='letter']) //查找所有name以'letter'结尾的input元素

6. [attribute*=value]匹配给定的属性是以包含某些值的元素
   $("input[name*='man']")//查找所有name包含'man'的input元素

7. [selector1][selector2][selectorN]复合属性选择器,冉要同时满足多个条件时用。
    $("input[id][name='man']")//含有id属性,并且name为man的

选择器-子元素:
1.:nth-child(index/even/odd/equation)匹配其父元素下的第N个子或奇偶元素
    $("ul li:nth-child(2)")//在每个ul查找第2个li

2. :first-child匹配第一个子元素
    $("ul li:first-child")//在每个ul中查找第一个li

3.:las-child匹配最后一个子元素
    $("ul li:last-child")// 在第个ul中查找最后一个li

4.only-child如果某个元素是父元素中唯一的子元素,那将会被匹配,如果父元素中含有其他元素,不会被匹
   $("ul li:only-child")//在ul中查找是唯一子元素的li

选择器-表单:
1.:input ,:text ,:password ,:radio , :checkbox ,:submit ,:image ,:reset ,:button , :file
2.:hidden匹配所有不可见元素,或type为hidden的元素

选择器-表单对象属性:
1.:enable匹配所有可用元素
   $("input:enabled")//查找所有可用的input元素

2.:disabled匹配所有不可用元素
   $("input:disabled")//匹配所有不可用元素

3.:checked匹配所有选中的被选中元素(复选框、单选框、不包括select中的option)
    $("input:checked")//查找所有选中的复选框元素

4.:selected匹配所有选中的option元素
    $("select option:selected")//查找所有选中的选项元素

 

 

 

jQuery 的选择器可谓之强大无比,这里简单地总结一下常用的元素查找方法
 
$( "#myELement" )    选择id值等于myElement的元素,id值不能重复在文档中只能有一个id值是myElement所以得到的是唯一的元素
$( "div" )           选择所有的div标签元素,返回div元素数组
$( ".myClass" )      选择使用myClass类的css的所有元素
$( "*" )             选择文档中的所有的元素,可以运用多种的选择方式进行联合选择:例如$( "#myELement,div,.myclass" )
 
层叠选择器:
$( "form input" )         选择所有的form元素中的input元素
$( "#main > *" )          选择id值为main的所有的子元素
$( "label + input" )     选择所有的label元素的下一个input元素节点,经测试选择器返回的是label标签后面直接跟一个input标签的所有input标签元素
$( "#prev ~ div" )       同胞选择器,该选择器返回的为id为prev的标签元素的所有的属于同一个父元素的div标签
 
基本过滤选择器:
$( "tr:first" )               选择所有tr元素的第一个
$( "tr:last" )                选择所有tr元素的最后一个
$( "input:not(:checked) + span" )  
 
过滤掉:checked的选择器的所有的input元素
 
$( "tr:even" )               选择所有的tr元素的第0,2,4... ...个元素(注意:因为所选择的多个元素时为数组,所以序号是从0开始)
 
$( "tr:odd" )                选择所有的tr元素的第1,3,5... ...个元素
$( "td:eq(2)" )             选择所有的td元素中序号为2的那个td元素
$( "td:gt(4)" )             选择td元素中序号大于4的所有td元素
$( "td:ll(4)" )              选择td元素中序号小于4的所有的td元素
$( ":header" )
$( "div:animated" )
内容过滤选择器:
 
$( "div:contains('John')" ) 选择所有div中含有John文本的元素
$( "td:empty" )           选择所有的为空(也不包括文本节点)的td元素的数组
$( "div:has(p)" )        选择所有含有p标签的div元素
$( "td:parent" )          选择所有的以td为父节点的元素数组
可视化过滤选择器:
 
$( "div:hidden" )        选择所有的被hidden的div元素
$( "div:visible" )        选择所有的可视化的div元素
属性过滤选择器:
 
$( "div[id]" )              选择所有含有id属性的div元素
$( "input[name='newsletter']" )    选择所有的name属性等于 'newsletter' 的input元素
 
$( "input[name!='newsletter']" ) 选择所有的name属性不等于 'newsletter' 的input元素
 
$( "input[name^='news']" )         选择所有的name属性以 'news' 开头的input元素
$( "input[name$='news']" )         选择所有的name属性以 'news' 结尾的input元素
$( "input[name*='man']" )          选择所有的name属性包含 'news' 的input元素
 
$( "input[id][name$='man']" )    可以使用多个属性进行联合选择,该选择器是得到所有的含有id属性并且那么属性以man结尾的元素
 
子元素过滤选择器:
 
$( "ul li:nth-child(2)" ),$( "ul li:nth-child(odd)" ),$( "ul li:nth-child(3n + 1)" )
 
$( "div span:first-child" )          返回所有的div元素的第一个子节点的数组
$( "div span:last-child" )           返回所有的div元素的最后一个节点的数组
$( "div button:only-child" )       返回所有的div中只有唯一一个子节点的所有子节点的数组
 
表单元素选择器:
 
$( ":input" )                  选择所有的表单输入元素,包括input, textarea, select 和 button
 
$( ":text" )                     选择所有的text input元素
$( ":password" )           选择所有的password input元素
$( ":radio" )                   选择所有的radio input元素
$( ":checkbox" )            选择所有的checkbox input元素
$( ":submit" )               选择所有的submit input元素
$( ":image" )                 选择所有的image input元素
$( ":reset" )                   选择所有的reset input元素
$( ":button" )                选择所有的button input元素
$( ":file" )                     选择所有的file input元素
$( ":hidden" )               选择所有类型为hidden的input元素或表单的隐藏域
 
表单元素过滤选择器:
 
$( ":enabled" )             选择所有的可操作的表单元素
$( ":disabled" )            选择所有的不可操作的表单元素
$( ":checked" )            选择所有的被checked的表单元素
$( "select option:selected" ) 选择所有的select 的子元素中被selected的元素
 
  
 
选取一个 name 为”S_03_22″的input text框的上一个td的text值
$(”input[@ name =S_03_22]“).parent().prev().text()
 
名字以”S_”开始,并且不是以”_R”结尾的
$(”input[@ name ^= 'S_' ]“).not(”[@ name $= '_R' ]“)
 
一个名为 radio_01的radio所选的值
$(”input[@ name =radio_01][@checked]“).val();
 
  
 
  
 
$( "A B" ) 查找A元素下面的所有子节点,包括非直接子节点
$( "A>B" ) 查找A元素下面的直接子节点
$( "A+B" ) 查找A元素后面的兄弟节点,包括非直接子节点
$( "A~B" ) 查找A元素后面的兄弟节点,不包括非直接子节点
 
1. $( "A B" ) 查找A元素下面的所有子节点,包括非直接子节点
 
例子:找到表单中所有的 input 元素
 
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= "name" />, <input name= "newsletter" /> ]
 
2. $( "A>B" ) 查找A元素下面的直接子节点
例子:匹配表单中所有的子级input元素。
 
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= "name" /> ]
 
3. $( "A+B" ) 查找A元素后面的兄弟节点,包括非直接子节点
例子:匹配所有跟在 label 后面的 input 元素
 
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" /> ]
 
 
4. $( "A~B" ) 查找A元素后面的兄弟节点,不包括非直接子节点
例子:找到所有与表单同辈的 input 元素
 
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" /> ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值