jQuery的选择器和CSS的选择器非常相似,所以先从CSS选择器入手,了解下选择器的分类。CSS1-CSS3提供非常丰富的选择器,但是由于某些选择器被各个浏览器支持的情况不一样,所以很多选择器在实际CSS开发中很少用到
CSS1-CSS3提供了非常多的选择器,总的来说我们可以分几大类:
群组选择器:逗号“,” 简单选择器:ID、标签、类、属性、通配符 关系选择器:孩子、后代、相邻、兄弟 伪类选择器:动作伪类、目标伪类、语言伪类、状态伪类、结构伪类、取反伪类
群组选择器用于分组合并多个处理的结构
selector1, selector2, selectorN
简单选择器"#" "." "[" "*" ,这些都有内置原生API的支持,不过存在兼容问题。
属性选择器在CSS2.1中只有四种
[att] [att=val] [att~=val] [att|=val]
在CSS3中又增加了三种:
[attr^=val] [attr$=val] [attr*=val]
当然除此之外jQuery还实现了自定义的属性选择器:
[attribute!='value'] [attributeFilter1][attributeFilter2][attributeFilterN]
关系选择器
关系选择器存在着关联,不能是单独存在的。
ancestor descendant parent > child prev + next prev ~ siblings
伪类
这个细分就很多了,jQuery把这些伪类加工并扩展成几个大块:
基本筛选器: eq get first lang It not odd root... 内容筛选器: contains empty has parent... 可见筛选器: hidden visible 子元素筛选器: first-child nth-child only-child... 表单: bottom checkbox foucs input text...
查阅jQuery的API,针对选择器的处理确实太多了。
<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <script src="http://code.jquery.com/jquery-latest.js"></script> <style> div,span,p { width: 50px; height: 30px; float:left; padding: 3px; margin: 2px; background-color: #EEEEEE; font-size:10px; } </style> <title></title> </head> <body> <div> div <li>222</li> </div> <p class="notMyClass">p class="notMyClass"</p> <span>span</span> <div>John Resig</div> <input name="milkman" /> <input name="email" disabled="disabled" /></br> <button id="selector1">分组选择器</button> <button id="selector2">层级选择器</button> <button id="selector3">属性选择器</button> <button id="selector4">内容选择器</button> <button id="selector5">表单选择器</button> <button id="selector6">子元素选择器</button> <script type="text/javascript"> $("#selector1").click(function() { $("div,span,p.myClass").css("border", "3px solid red") }) $("#selector2").click(function() { $("div > li").css("border", "3px double red") }) $("#selector3").click(function() { $('input[name*="man"]').val('has man in it!') }) $("#selector4").click(function() { $("div:contains('John')").css("text-decoration", "underline") }) $("#selector5").click(function() { $("input:disabled").val("this is it") }) $("#selector6").click(function() { $("div:first-child") .css("text-decoration", "underline") }) </script> </body> </html>