1.css选择器
标签选择器:a{...}
id选择器:#note{...}
类选择器:div.note{..}、.dream{...}
群组选择器:td,p,div,a{...}
后代选择器: #link a{...}
通配选择器:*{...}
2.jQuery选择器
看一个小例子:
<html>
<head>
<script src="../jquery-1.3.1.js" type="text/javascript"></script>
<script type="text/javascript">
function demo(){
alert("demo");
}
</script>
</head>
<body>
<p onclick="demo();">点击我</p>
</body>
</html>
这段代码虽然实现了功能,但没有将网页内容和行为分离。
<p class="demo">点击我</p>
<script type="text/javascript">
$(".demo").click(function(){
alert("jQuery demo");
})
</script>
这部分有点不明白,为什么我把js代码放在head里就没用了,这可能和加载顺序有关系。
我们可以发现,他们选择器的使用方式是一样的。.demo{} --$(".demo")
$("")获取的永远是对象,即使网页上没有此元素,因此判断元素存在与否应该使用:
if ($("#tt").length>0)
{
//do something
}
jQuery选择器分为基本选择器、层次选择器、过滤选择器和表单选择器。
<!-- 测试的元素 -->
<div class="one" id="one" >
id为one,class为one的div
<div class="mini">class为mini</div>
</div>
<div class="one" id="two" title="test" >
id为two,class为one,title为test的div.
<div class="mini" title="other">class为mini,title为other</div>
<div class="mini" title="test">class为mini,title为test</div>
</div>
<div class="one">
<div class="mini">class为mini</div>
<div class="mini">class为mini</div>
<div class="mini">class为mini</div>
<div class="mini"></div>
</div>
<div class="one">
<div class="mini">class为mini</div>
<div class="mini">class为mini</div>
<div class="mini">class为mini</div>
<div class="mini" title="tesst">class为mini,title为tesst</div>
</div>
<div style="display:none;" class="none">style的display为"none"的div</div>
<div class="hide">class为"hide"的div</div>
<div>
包含input的type为"hidden"的div<input type="hidden" size="8"/>
</div>
<span id="mover">正在执行动画的span元素.</span>
还有css
div,span,p {
width:140px;
height:140px;
margin:5px;
background:#aaa;
border:#000 1px solid;
float:left;
font-size:17px;
font-family:Verdana;
}
div.mini {
width:55px;
height:55px;
background-color: #aaa;
font-size:12px;
}
div.hide {
display:none;
}
- 基本选择器:
#id | $("#text")选取id为test的元素 |
。class | $(".test")选取所有class为test的元素 |
element | $("p")选取所有的<p>元素 |
* | $("*")选取所有元素 |
selector1,selector2... | $("div,span,p.myClass")选取所有<div>,<span>,和拥有class为myClass的<p>标签的一组元素 |
- 层次选择器(后代元素,子元素,相邻元素,兄弟元素)
$("ancestor descendant") | $("div span")选取<div>里的所有的<span>元素 |
$("parent>child") | $("div>span")选取<div>元素下元素名是<span>的子元素 |
$("prev+next") | $(".one+div")选取class为one的下一个<div>元素 |
$("pre~siblings") | $("#two~div")选取id为two的元素后面的所有<div>兄弟元素 |
等价关系
$(".one+div") | $(".one").next("div") |
$("#two~div") | $("#prev").nextAll("div") |
siblings和$("pre~siblings")进行比较
$("#prev~div").css("","")//选取#prev之后的所有同辈div元素
$("#prev").nextAll("div").css("","")//同上
$("#prev").siblings(div).css("","")//选取#prev所有同辈的div元素,无论前后位置
- 过滤选择器
基本过滤选择器
:first | $("div:first")选取所有<div>元素中第一个<div>元素 |
:last | $("div:last")选取所有<div>元素中最后一个<div>元素 |
:not(selector) | $("input:not(.myClass)")选取class不是myClass的<input>元素 |
:even | $("input:even")选取索引是偶数的<input>元素 |
:odd | $("input:odd")选取索引是奇数的<input>元素 |
:eq(index) | $("input:eq(1)")选取索引等于1的<input>元素 |
:gt(index) | $("input:gt(1)")选取索引大于1的<input>元素 |
:lt(index) | $("input:lt(1)")选取索引小于1的<input>元素 |
:header | $(":header")选取网页中所有的<h1><h2><h3>... |
:animated | $("div:animated")选取正在执行动画的元素 |
内容过滤选择器
:contains(text) | $("div:contains('我')")选取含有文本我的<div>元素 |
:empty | $(div:empty)选取不包含子元素的<div空元素> |
:has(selector) | $("div:has(p)")选取含所有<p>元素的<div>元素 |
:parent | $("div:parent")选取拥有子元素的<div>元素 |
可见性过滤选择器
:hidden | $(":hidden")选取所有不可见的元素,包括<input type="hidden"/><div style="display:none">和<div style="visibility:hidden">等元素,如果只想选取<input>元素,可以使用$("input:hidden") |
:visable | $("div:visible")选取所有可见的<div>元素 |
属性过滤器
[attribute] | $("div[id]")选取拥有属性id的元素 |
[attribute= value] | $("div[tittle=test]")获取title为“test”的<div>元素 |
[attribute!= value] | $("div[tittle!=test]")获取title不等于“test”的<div>元素(没有属性title的<div>也会被选取) |
[attribute^= value] | $("div[tittle^=test]")选取属性tittle以test开始的<div>元素 |
[attribute$= value] | $("div[tittle$=test]")选取属性tittle以test结束的<div>元素 |
[attribute*= value] | $("div[tittle*=test]")选取属性tittle含有test的<div>元素 |
[selector][selector][selector] | $("div[id][tittle$=''test]")选取拥有属性id,并且属性title以"test"结束的<div>元素 |
子元素过滤选择器
:nth-child(index /even/odd/equatin) |
eq(index)只匹配一个元素,而:nth-child将为每个父元素匹配子元素,并且:nth-child(index) 的index从1开始 |
:first-child | 选取每个父元素的第一个子元素 |
:last-child | 选取们每个父元素的最后一个子元素 |
:only-child | 如果摸个元素是他的父元素中唯一的子元素,那么匹配,否则不匹配。 |
表单对象属性过滤选择器
:enabled | $("#form1 :enabled")选取id为“form1”的表单内的所有可用元素 |
:disabled | $("#form1 :disabled")选取id为“form1”的表单内的所有不可用元素 |
:checked | $("input:checked");选取所有被选中的<input>元素 |
:selected | $("select :selected");选取所有被选中的选项元素 |
表单选择器
:input | $(":input")选取所有<input>,<textarea>,<select>,<button>元素 |
:text | $(":text")选取所有的单行文本框 |
:password | $(":password")获取所有密码框 |
:radio | $(":radio")h获取所有单选框 |
:checkbox | $(":checkbox")获取所有的复选框 |
:submt | $(":submt")获取所有的提交按钮 |
:image | $(":image")获取所有的图片按钮 |
:reset | $(":reset")获取所有重置按钮 |
:button | $(":button")获取所有按钮 |
:file | $(":file")获取所有上传文件 |
:hidden | $(":hidden")选取所有不可见元素 |
- 选择器中的一些注意事项:
一、选择器中含有特殊字符
1.含有".","#","[","("等,要用//转移
比如:<div id="id#d">bb</div>
$('#id#b')就是错的,要用$('#id//#b')
2.属性选择器的引号问题
低版本:$('div[@title="test"]');
现在正确写法:$('div[title="test"]')
二、选择器中含有空格符的注意事项
$('.test :hidden'):选取class 为test的元素里面的隐藏元素
$('.test:hidden'):选取隐藏的class为"test"的元素
案例研究:略