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>