小结:

主要介绍了jQuery中各种类型的选择器,选择器是行为与文档之间连接的纽带,并讲解了选择器中的一些注意事项。

  1. 了解jQuery选择器

要将某个样式应用于特定HTML元素,需要用到CSS选择器找到该元素。同样,要将某种行为应用到特定的DOM元素,需要用到jQuery选择器找到该元素。

  1. jQuery选择器优势

①简洁的写法

②支持CSS1和CSS2全部和CSS3部分选择器,并有少量独有的选择器

③完善的处理机制,不仅简洁而且能避免某些错误。

比如:

Document.getElementById(“tt”),如果网页中没有id为tt的元素就会报错,但是使用$(“#tt”)则永远不会报错。因此判断某个元素在网页中是否存在时,可以通过取到元素长度来判断。

If($(“#tt”).length>0){
//do something
}
或
If($(“#tt”)[0]){
//do something
}
或
If($(Document.getElementById(“tt”)){
//do something
}
1. jQuery选择器分类
jQuery选择器分为基本选择器、层次选择器、过滤选择器和表单选择器。
1. 基本选择器
①Id选择器(#id):eg: $(“#text”) 选取id为test的元素
②类选择器(.class)eg:  $(“.test”)  选取所有class为test的元素
③元素选择器(element) eg:  $(“p”)   选取所有p元素
④* 匹配所有元素 eg:  $(“*”)  
⑤selector1,selector2,selector3,selectorN  将每一个选择器匹配到的元素合并后一起返回   eg:  $(“div,span,p.myClass”)  选取所有div,span标签以及所有class为myClass的p标签的一组元素。
1. 层次选择器
通过DOM之间的层次关系来获取特定元素,例如后代元素、子元素、相邻元素和同辈元素等。
①$(“ancestor descendant”)  选取ancestor 元素里所有descendant(后代)元素
eg: $(“div span”)选取<div>里所有<span>元素
②$(“parent>child”)   选取parent元素下的子元素(与第一个有区别,子元素和后代元素)
eg:  $(“div> span”)选取<div>里所有元素名是<span>的子元素
③$(“prev+next”)   选取紧跟在prev元素后面的next元素
eg:  $(“.one+ span”)选取紧跟在class为one的元素后面<span>同辈元素
注意:这个因为可以用更简单的方法代替,所以使用几率较少。$(.one+div)=$(“.one”).next(“div”)
④$(“pre~siblings”)   选取prev元素后面的所有siblings元素
eg:  $(“.one~ span”)选取在class为one的元素后面所有<span>同辈元素
注意:此选择器可用nextAll()代替
//选取#prev之后的所有同辈div元素
$(“#prev~ div”).css(“background”,”bbffaa”);
//同上
$(“#prev”).nextAll(“div”).css(“background”,”bbffaa”);
//选取#prev的所有同辈div元素,无论前后位置
$(“#prev”).siblings(“div”).css(“background”,”bbffaa”);
1. 过滤选择器
主要是通过特定的过滤规则来筛选出所需的DOM元素,与CSS中的伪类选择器语法相同。按照不同的过滤规则可分为:基本过滤、内容过滤、可见性过滤、属性过滤、子元素过滤和表单对象属性过滤。
①基本过滤选择器
:first  eg:$(“div:first”)  选取所有div元素中第一个div元素
:last  eg:$(“div:last”)  选取所有div元素中最后一个div元素
:not(selector)  eg:$(“input:not(.myClass)”)  选取class不是myClass的input元素
:even  eg:$(“div:even”)  选取索引是偶数的div元素,索引从0开始
:odd  eg:$(“div:odd”)  选取索引是奇数的div元素,索引从0开始
:eq(index)  eg:$(“div:eq(1)”)  选取索引等于1的div元素
:gt(index)  eg:$(“div:gt(1)”)  选取索引大于1的div元素
:lt(index)  eg:$(“div:lt(1)”)  选取索引小于1的div元素
:header  eg:$(“:header”)  选取所有网页中的h1,h2,h3
:animated  eg:$(“div:animated”)  选取正在执行动画的div元素
:focus  eg:$(“:focus”)  选取当前正在获取焦点的元素
②内容过滤选择器:体现在他所包含的子元素或文本内容上
:contains(text)  eg:$(“div:contains(‘我’)”)  选取含有文本内容为”我”的div元素
:empty  eg:$(“div:empty”)  选取不包含子元素(包括文本元素)的div空元素
:has(selector)  eg:$(“div:has(p)”)  选取含有p元素的div元素
:parent  eg:$(“div:parent”)  选取拥有子元素(包括文本元素)的div元素
③可见性过滤选择器:根据元素的课件和不可见装填来选择相应的元素
:hidden  eg:$(“:hidden”)  选取所有不可见的元素。包括<input type=”hidden”/>、<div style=”display:none;”>和<div style=”visibility:hidden;”>等元素,如果只是想选取input则可使用$(“input:hidden”)
:visible  eg:$(“div:visible”)  选取所有可见的div元素
④属性过滤选择器:
[attribute]  eg:$(“div[id]”)  选取拥有属性id的div元素
[attribute=value]  eg:$(“div[title=test]”)  选取title属性为test的div元素
[attribute!=value]  eg:$(“div[title!=test]”)  选取title属性不为test的div元素或者没有title属性的div元素
[attribute^=value]  eg:$(“div[title^=test]”)  选取title属性以test开始的div元素
[attribute$=value]  eg:$(“div[title$=test]”)  选取title属性以test结束的div元素
[attribute*=value]  eg:$(“div[title*=test]”)  选取title属性含有test的div元素
[attribute|=value]  eg:$(“div[title|=test]”)  选取title属性等于test或者以test为前缀(后跟一个连字符”-”)的div元素
[attribute~=value]  eg:$(“div[title~=test]”)  选取title属性用空格分隔的值中包含字符test的div元素
[attribute1][attribute2][attributeN]  eg:$(“div[id][title$test]”)  选取拥有属性id并且属性title以test结束的div元素
⑤子元素过滤选择器(注意与普通过滤器的区别):
:nth-child(index/even/odd/equation)  eg:  :eq(index)只匹配一个元素,index从0开始,而:nth-child将为每一个父元素匹配子元素,并且index从1开始。
:nth-child(3n)选取每个父元素下索引值是3的倍数的元素
:first-child  eg:  :first(index)只匹配一个元素,而:first-child将为每一个父元素匹配第一个子元素。$(“ul li:first-child”)  选择每个ul钟第一个li元素
:last-child  eg:  :last(index)只匹配一个元素,而:last-child将为每一个父元素匹配最后一个子元素。$(“ul li:last-child”)  选择每个ul钟最后一个li元素
:only-child  eg:  $(“ul li:only-child”)  在ul中选取是唯一子元素的li元素
⑥表单对象属性过滤选择器:
:enabled   eg:$(“#form1:enabled”)  选取id为form1的表单内所有可用元素
:disabled   eg:$(“#form1:disabled”)  选取id为form1的表单内所有不可用元素
:checked   eg:$(“input::checked”)  选取所有被选中的input元素。(单选框,复选框)
:selected   eg:$(“#select option:selected”)  选取所有被选中的选项元素
1. 表单选择器
为了使用户更加灵活操作表单,jQuery专门加入了表单选择器。
:input   eg:$(“:input”)  选取所有input、textarea、select和button元素
:text   eg:$(“:text”)  选取所有的单行文本框
:password   eg:$(“:password”)  :input  选取所有的密码框
:radio   eg:$(“:radio”)   选取所有单选框
:checkbox   eg:$(“:checkbox”)   选取所有复选框
:submit   eg:$(“:submit”)  选取提交按钮
:image   eg:$(“:image”) 选取所有图像按钮
:reset   eg:$(“:reset”)  选取所有重置按钮
:button   eg:$(“:button”)  选取所有按钮
:file   eg:$(“:file”)  选取所有上传域
:hidden   eg:$(“:hidden”)  选取所有不可见元素
1. 其他选择器
为了满足多变的业务需要,jQuery提供可许多实用的选择器的扩展
其中一些插件可以用于增加更多的选择器,如.color可以匹配到颜色等
此外还可以利用JavaScript提供的CSS选择器如cssQuery()等
1. 选择器注意事项
2. 选择器中含有特殊符号的注意事项
①选择器中含有”.”,”#”,”(“,”[“等
如:
<div id=”id#b”>bb</div>
<div id=”id[1]”>cc</div>
$(“#id#b”)×  $(“#id\\#b”)√
$(“#id[1]”) ×   $(“#id\\[1\\]”)
②属性选择器的@符号问题
1.3.1之前的版本  $(“div[@title=’test’]”)
1.3.1及之后的版本  $(“div[title=’test’]”)
1. 选择器中含有空格的注意事项
Var $t_a=$(‘.test :hidden’);//带空格的  选取class为test的元素里面的隐藏元素
Var $t_b=$(‘.test:hidden’);//带空格的   选取隐藏的class为test的元素