如果想通過DOM元素之間的層次關係來獲取特定元素,例如後代元素、子元素、相鄰元素和同輩元素等,那麼層次選擇器是一個非常好的選擇。
但是,在層次選擇器中,第一個和第二個選擇器比較常用,而後面兩個因爲在jQuery裏可以用更加簡單的方法代替,所以使用的機率相對少些。
可以用next()方法來代替$('prev+next')。例如:$(".one + div")和$(".one").next("div")是等價的
可以用nextAll()方法 來替代$('prev ~ div")。列如:$("#prev~div")和$("#prev").nextAll("div")是等價的
siblings()方法與$('prev~sibling')選擇器的對比:
$("prev~div")選擇器只能選擇“prev”元素後面的同輩div元素,而sibling()方法與前後位置無關,只要是同輩節點就都能匹配。
效果描述:
具體代碼如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>基本選擇器</title>
<script src="../libs/jquery.js"></script>
<style type="text/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: #aaaaaa;
font-size: 12px;
}
div.hide{
display: none;
}
</style>
</head>
<body>
<div class="one" id="one">
id is one,class also is one
<div class="mini">class name is mini</div>
</div>
<div class="one" id="two" title="test">
id is two, class is one, title is test
<div class="mini" title="other">class is mini,title is other</div>
<div class="mini" title="test">class is mini, title is test</div>
</div>
<div class="one">
<div class="mini">class is mini</div>
<div class="mini">class is mini</div>
<div class="mini">class is mini</div>
<div class="mini"></div>
</div>
<div class="one">
<div class="mini">class is mini</div>
<div class="mini">class is mini</div>
<div class="mini">class is mini</div>
<div class="mini" title="test">class is mini, title is test</div>
</div>
<div style="display: none" class="none">
style的display爲“none”的div
</div>
<div class="hide"> class is hide</div>
<div>
包含input的type爲“hidden”的div
<input type="hidden" size="8">
</div>
<span id="mover">正在執行動畫的sapn元素</span>
<script>
/*$("body div") //改變body內所有div的背景色
.css("background","#000099");*/
/* $("body > div") //改變body內子div元素的背景色
.css("background","#330000");*/
/* $(".one + div") //改變class爲one的下一個div同輩元素背景色
.css("background","#666699");*/
$("#two ~ div") //改變ID爲two的元素後面的所有div同輩元素的背景色
.css("background","#bbffaa");
</script>
</body>
</html>