jQuery选择器支持CSS1、CSS2的全部和部分CSS3选择器,同时也拥有少量独有的选择器。jQueryt选择器分为基本选择器、层次选择器、过滤选择器和表单选择器。为了练习先写一个html页面。
jQuery selector
选择器
id为one,class为one的div
class为mini
id为tow,class为one,title为test的div
class为mini,title为other
class为mini,title为test
class为mini
class为mini
class为mini
class为mini
class为mini
class为mini
class为mini,title为test
class为hide的div
包含input的type为"hidden"的div
正在执行动画的span
基本选择器
下面讲各个选择器,并写出示例代码,添加到ready函数中并在浏览器中看看效果。
id选择器:$("#test"),选取id为test的元素,返回单个元素
$("#one").css("background", "#bbffaa");//改变id为one的元素的背景色
.class选择器:$(".test")选取所有class为test的元素,返回集合元素
$(".mini").css("background", "#bbffaa");//改变class为mini的所有元素的背景色
element选择器:$("p"),选取所有的
元素,返回集合元素
$("div").css("background", "#bbffaa");//改变元素名为的所有元素的背景色
选择器:$(""),选择所有元素,返回集合元素
$("*").css("background", "#bbffaa");//改变所有元素的背景色
selector1,selector2,......,selectorN选择器:$("div,span,p.myClass")选取所有
,和拥有class为myClass的标签的一组元素,返回集合元素
$("span, #two").css("background", "#bbffaa");//改变所有的元素和id为two的元素的背景色
层次选择器
如果想通过DOM元素之间的层次关系来获取特定的元素,例如后代元素、子元素、相邻元素和同辈元素等,那么层次选择器是一个非常好的选择。
$("ancestor descendent"),选取ancestor元素里的所有descendent(后代)元素,返回集合元素
$("body div").css("background", "#bbffaa");//改变body内所有div元素的背景色
$("parent>child"),选取parent元素下的child(子)元素,与前一个选择器有区别,前一个选择器选择的是后代元素,返回集合元素
$("body > div").css("background", "#bbffaa");//改变body内子元素的背景色
$("prev + next"),选取紧接在prev元素后的next元素,返回集合元素
$(".one + div").css("background", "#bbffaa");//改变class为one的下一同辈元素的背景色
$("prev~siblings"),选取prev元素之后的所有silibings元素,返回集合元素
$("#two ~ div").css("background", "#bbffaa");//改变id为two元素之后所有同辈元div元素的背景色
在层次选择器中,第1、2个选择器比较常用,面后面2个因为在jQuery里可以使用更简单的方法替代,比较少用。$(".one + div")与$(".one").next("div")等价;$("#prev ~ div")与$("#prev").nextAll("div");等价
过滤选择器
过滤选择器可以分为基本过滤、内容过滤、可见性过滤、属性过滤、子元素过滤和表单对象属性过滤选择器
基本过滤
:first,选取第1个元素,返回单个元素
$("div:first").css("background", "#bbffaa");//改变第一个div元素的背景色
:last,选取最后一个元素,返回单个元素
$("div:last").css("background", "#bbffaa");//改变 变最一一个div元素的背景色
:not(selector),却除所有与给定远择器匹配的元素
$("div:not(.one)").css("background", "#bbffaa");//改变class不为one的div元素的背景色
:even,选取索引值是偶数的所有元素,索引从0开始
$("div:even").css("background", "#bbffaa");//改变索引值为偶数的div元素的背景色
:odd,选取索引值是奇数的所有元素,索引从0开始
$("div:odd").css("background", "#bbffaa");//改变索引值为奇数的div元素的背景色
:eq(index),选取索引值等于index的元素
$("div:eq(3)").css("background","#bbffaa");//改变索引值为3的div元素的背景色
:gt(index),选取索引值大于index的元素
$("div:gt(3)").css("background","#bbffaa");//改变索引值大于3的div元素的背景色
:lt(index),选取索引值小于index的元素
$("div:lt(3)").css("background","#bbffaa");//改变索引值小于3的div元素的背景色
:header,选取所有的标题元素,便如h1,h2,h3等
$(":header").css("background","#bbffaa");//改变所有标题元素的背景色
:animated,选取当前正在执行动画的所有元素
$(":animated").css("background","#bbffaa");//改变所有正在执行动画的元素的背景色
:focus,选取当前获取焦点的元素
$(":focus").css("background","#bbffaa");//改变当前获取焦点的元素的背景色
内容过滤
:contains(text),选取含有文本内容为"text"的元素
$("div:contains(di)").css("background", "#bbffaa");//改变含有文本"di"的div元素的背景色
:empty,选取不包含子元素或者文本的空元素
$("div:empty").css("background", "#bbffaa");//改变不包含子元素(包括文本元素)的div元素的背景色
:has(selector),选取含有选择器所匹配的元素的元素
$("div:has('.mini')").css("background", "#bbffaa");//改变含有class为mini元素的div元素的背景色
:parent,选取含有子元素或者文本元素的元素
$("div:parent").css("background", "#bbffaa");//改变含有子元素(包括文本元素)的div元素背景色
属性过滤
[attribute],选取拥有此属性的元素
$("div[title]").css("background", "#bbffaa");//改变含有属性title的div元素的背景色
[attribute=value],选取属性的值为value的元素
$("div[title=test]").css("background", "#bbffaa");//改变title属性值等于"test"的div元属的背景色
[attribute!=value],选取属性的值不等于value的元素
$("div[title!=test]").css("background", "#bbffaa");//改变title属性值不等于"test"的div元属背景色
[attribute^=value],选取属性的值以value开始的元素
$("div[title^=te]").css("background", "#bbffaa");//改变属性title值以"te"开始的所有div元素背景色
[attribute$=value],选取属性的值以value结束的元素
$("div[title$=est]").css("background", "#bbffaa");//改变属性title值以"est"结尾的所有div元素背景色
[attribute*=value],选取属性的值含有value的元素
$("div[title*=es]").css("background", "#bbffaa");//改变属性title值包含"es"的div元素的背景色
[attribute|=value],选取属性等于给定字符串或以该字符串为前缀(该字符后跟一个连字符“-”)的元素
[attribute~=value],选取属性用空格分隔的值中包含一个给定值的元素
[attribute1][attribute2][attributeN],用属性选择器并成一个复合属性选择器,满足多个条件的元素
$("div[id][title*=es]").css("background", "#bbffaa");//改变含有属性id且属性title值含有"es"的div元素的背景色
可见性过滤
:hidden,选取所有不可见的元素
$("div:hidden").show(3000);//显示隐藏的div元素
:visible,选取所有可见的元素
$("div:visible").css("background", "#ff6500");//改变所有可见的div元素的背景色
子元素过滤
:nth-chile(index/even/odd/equation),选取每个父元素下的第index个子元素或者奇偶元素(index从1开始算起。详细功能如下:
- :nth-child(even)能选取每个父元素下的索引值是偶数的元素
- :nth-child(odd)能选取每个父元素下索引值是奇数的元素
- :nth-child(2)能选取每个父元素下索引值等于2的元素
- :nth-child(3n)能选取每个父元素下的索引值是3的倍数的元数,n从1开始
- :nth-child(3n+1)能选取每个父元素下的索引值是3n+1的元素,n从1开始
$("div.one :nth-child(2)").css("background", "#bbffaa");//改变每个class为one的div父元素下的第2个子元素的背景色
:first-child,选取父元素的第1个子元素
$("div.one :first-child").css("background", "#bbffaa");//改变每个class为one的div父元素下的第1个子元素的背景色
:last-child 选取每个父元素的最后一个子元素
$("div.one :last-child").css("background", "#bbffaa");//改变每个class为one的div父元素下的最后1个子元素的背景色
:only-child,如果某个元素是它父元素中惟一的子元素,那么将会匹配,如果父元素中含有其他元素,刚不会被匹配
$("div.one :only-child").css("background", "#bbffaa");//改变每个class为one的div父元素只有一个子元素,则改变背景色
表单对象属性过滤
这个选择器主要是对所选择的表单元素进行过滤。
为了学习表单对象属性过滤选择器需要新建一个html页面包含表单
表单对象属性过滤选择器
:enabled,选取所有可用元素
:disabled,选取所有不可用元素
:checked,选取所有被选中的元素(单选框,复选框)
:selected,选取所有被选中的选项元素(下拉列表)
表单选择器
:input 选取所有的,