祖先是父、祖父或曾祖父等等。
通过 jQuery,您能够向上遍历 DOM 树,以查找元素的祖先。
向上遍历 DOM 树
这些 jQuery 方法很有用,它们用于向上遍历 DOM 树:
- parent()
- parents()
- parentsUntil()
jQuery parent() 方法
parent() 方法返回被选元素的直接父元素。
该方法只会向上一级对 DOM 树进行遍历。
下面的例子返回每个 <span> 元素的的直接父元素:
实例
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script src="jquery.js"></script>
<style>
.ancestors *{
display:block;
border:2px #CCC solid;
color:#F00;
padding:5px;
margin:15px;
}
</style>
<script>
$(document).ready(function(){
$("span").parent().css({"color":"#00F","border":"2px solid #00F"})
})
</script>
</head>
<body>
<div class="ancestors">
<div style="width:500px">div (曾祖父)
<ul>
ul (祖父)
<li>
li(直接父)
<span>span</span>
</li>
</ul>
</div>
<div style="width:500px">
div (祖父)
<p>
p(直接父)
<span>span</span>
</p>
</div>
</div>
</body>
</html>
效果图:
jQuery parents() 方法
parents() 方法返回被选元素的所有祖先元素,它一路向上直到文档的根元素 (<html>)。
下面的例子返回所有 <span> 元素的所有祖先:
实例
用法和parent()相同
<script>
$(document).ready(function(){
$("span").parents().css({"color":"#00F","border":"2px solid #00F"})
})
</script>
效果图:
也可以使用可选参数来过滤对祖先元素的搜索。
下面的例子返回所有 <span> 元素的所有祖先,并且它是 <ul> 元素:
实例
<script>
$(document).ready(function(){
//$("span").parent().css({"color":"#00F","border":"2px solid #00F"})
//$("span").parents().css({"color":"#00F","border":"2px solid #00F"})
$("span").parents("ul").css({"color":"#00F","border":"2px solid #00F"});
})
</script>
效果图:
jQuery parentsUntil() 方法
parentsUntil() 方法返回介于两个给定元素之间的所有祖先元素。
下面的例子返回介于 <span> 与 <div> 元素之间的所有祖先元素:
实例
$(document).ready(function(){
//$("span").parent().css({"color":"#00F","border":"2px solid #00F"})
//$("span").parents().css({"color":"#00F","border":"2px solid #00F"})
// $("span").parents("ul").css({"color":"#00F","border":"2px solid #00F"});
$("span").parentsUntil("div").css({"color":"#00F","border":"2px solid #00F"});
})
效果图;