jQuery 选择器(更新ing)

选择器实例选取
 元素选择    
* $("*") 所有元素
#id $("#lastname") id="lastname" 的元素
.class $(".intro") 所有 class="intro" 的元素
element $("p") 所有 <p> 元素
.class.class $(".intro.demo") 所有 class="intro" 且 class="demo" 的元素

 selector1,selector2,

selector3……

 $("th,td,.intro")  所有带有匹配选择的元素
 顺序奇偶选择器    
:first $("p:first") 第一个 <p> 元素
:last $("p:last") 最后一个 <p> 元素
:even $("tr:even") 所有偶数 <tr> 元素
:odd $("tr:odd") 所有奇数 <tr> 元素
 数值大小选择器    
:eq(index) $("ul li:eq(3)") 列表中的第四个元素(index 从 0 开始)
:gt(no) $("ul li:gt(3)") 列出 index 大于 3 的元素
:lt(no) $("ul li:lt(3)") 列出 index 小于 3 的元素
 否定选择器    
:not(selector) $("input:not(:empty)") 所有不为空的 input 元素
 标题元素    
:header $(":header") 所有标题元素 <h1> - <h6>
 动画元素选择    
:animated   所有动画元素
 内容选择器    
:contains(text) $(":contains('W3School')") 包含指定字符串的所有元素
:empty $(":empty") 无子(元素)节点的所有元素
 可见与隐藏    
:hidden $("p:hidden") 所有隐藏的 <p> 元素
:visible $("table:visible") 所有可见的表格
 属性选择器    
[attribute] $("[href]") 所有带有 href 属性的元素
[attribute=value] $("[href='#']") 所有 href 属性的值等于 "#" 的元素
[attribute!=value] $("[href!='#']") 所有 href 属性的值不等于 "#" 的元素
[attribute$=value] $("[href$='.jpg']") 所有 href 属性的值包含以 ".jpg" 结尾的元素
 [attribute^=value]    所有 href 属性的值包含以 ".jpg" 开头的元素
 [attribute*=value]    所有 href 属性的值包含 "#" 的元素
 [][][][]    符合所有选择条件的元素
 表单选择器    
:input $(":input") 所有 <input> 元素
:text $(":text") 所有 type="text" 的 <input> 元素
:password $(":password") 所有 type="password" 的 <input> 元素
:radio $(":radio") 所有 type="radio" 的 <input> 元素
:checkbox $(":checkbox") 所有 type="checkbox" 的 <input> 元素
:submit $(":submit") 所有 type="submit" 的 <input> 元素
:reset $(":reset") 所有 type="reset" 的 <input> 元素
:button $(":button") 所有 type="button" 的 <input> 元素
:image $(":image") 所有 type="image" 的 <input> 元素
:file $(":file") 所有 type="file" 的 <input> 元素
:enabled $(":enabled") 所有激活的 input 元素
:disabled $(":disabled") 所有禁用的 input 元素
:selected $(":selected") 所有被选取的 input 元素
:checked $(":checked") 所有被选中的 input 元素
 子元素选择器    
     
 层次选择器    
 后代元素  $("ancester desendant") ancester 中所有desendant元素

一、选择器中含有特殊符号的注意事项

1.选择器中含有“.”、“#”、“(”或“]”等特殊字符

  根据W3C的规定,属性值中是不能含有这些特殊字符的,但在实际项目中偶尔会遇到表达式中含有“#”和“.”等特殊字符,如果按照普通的方式去处理出来的话就会出错。解决此类错误的方法是使用转义符转义。

  HTML代码如下:

  1. <div id="id#b">bb</div> 
  2. <div id="id[1]">cc</div>  

  如果按照普通的方式来获取,例如:

  1. $('#id#b');  
  2. $('#id[1]'); 

  以上代码不能正确获取到元素,正确的写法如下:

  1. $('#id\\#b'); //转义特殊字符“#”  
  2. $('#id\\[1\\]'); //转义特殊字符“[ ]” 

2.属性选择器的@问题

  1.3.1版本彻底放弃了1.1.0版本遗留下的@符号,如果你使用1.3.1以上的版本,那么你不能在属性前添加@符号,比如:

  1. $('div[@title="test"']; 

  正确的写法是去掉@符号,比如:

  1. $('div[title="test"']; 

二、选择器中含有空格的注意事项

  选择器中的空格也是不容忽视的,多一个空格或少一个空格也许会得到截然不同的结果。看下面这个例子,它的HTML代码如下:

  1. <div class="test">  
  2. <div style="display:none;">aa</div>  
  3. <div style="display:none;">bb</div>  
  4. <div style="display:none;">cc</div>  
  5. <div class="test" style="display:none;">dd</div>  
  6. </div>  
  7. <div class="test" style="display:none;">ee</div>  
  8. <div class="test" style="display:none;">ff</div> 

  使用如下的jQuery选择器分别获取它们。之所以会出现不同的结果,是因为后代选择器与过滤选择器的不同。

  1. //注意区分类似这样的选择器  
  2. //虽然一个空格,却截然不同的效果.  
  3. var $t_a = $('.test :hidden');  
  4. var $t_b = $('.test:hidden');  
  5. var len_a = $t_a.length;  
  6. var len_b = $t_b.length;  
  7. alert("$('.test :hidden') = "+len_a); //输出 4  
  8. alert("$('.test:hidden') = "+len_b); //输出 3 

  之所以会出现不同的结果,是因为后代选择器与过滤选择器的不同。

  1. var $t_a = $('.test :hidden'); //有空格 

  以上代码是选取class为“test”的元素里面的隐藏元素。而代码:

  1. var $t_b = $('.test:hidden'); //没有空格 

  则是选取隐藏的class为“test”的元素。 

posted on 2012-02-14 14:12  batigol  阅读(513)  评论(0)    收藏  举报

导航