jQuery 祖先


jQuery 遍歷 - 祖先

祖先是父、祖父或曾祖父等等。

透過 jQuery,您能夠向上遍歷 DOM 樹,以查找元素的祖先。


向上遍歷DOM 樹

這些jQuery 方法很有用,它們用於向上遍歷DOM 樹:

parent()

parents()

parentsUntil()


jQuery parent() 方法

#parent() 方法傳回被選元素的直接父元素。

此方法只會向上一層對 DOM 樹進行遍歷。

下面的範例傳回每個<span> 元素的直接父元素:

#實例

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<style>
.ancestors *
{ 
	display: block;
	border: 2px solid lightgrey;
	color: lightgrey;
	padding: 5px;
	margin: 15px;
}
</style>
<script src="http://libs.baidu.com/jquery/1.10.2/jquery.min.js">
</script>
<script>
$(document).ready(function(){
  $("span").parent().css({"color":"red","border":"2px solid red"});
});
</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> 元素的所有祖先:

#實例

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<style>
.ancestors *
{ 
	display: block;
	border: 2px solid lightgrey;
	color: lightgrey;
	padding: 5px;
	margin: 15px;
}
</style>
<script src="http://libs.baidu.com/jquery/1.10.2/jquery.min.js">
</script>
<script>
$(document).ready(function(){
  $("span").parents().css({"color":"red","border":"2px solid red"});
});
</script>
</head>

<body class="ancestors">body (曾曾祖父元素)
  <div style="width:500px;">div (曾祖父元素)
    <ul>ul (祖父元素)  
      <li>li (父元素)
        <span>span</span>
      </li>
    </ul>   
  </div>
</body>

</html>

執行實例»點擊"運行實例" 按鈕查看線上實例

您也可以使用可選參數來過濾對祖先元素的搜尋。

下面的範例傳回所有<span> 元素的所有祖先,並且它是<ul> 元素:

##實例

<!DOCTYPE html>
<html>
<head>
<style>
.ancestors *
{ 
display: block;
border: 2px solid lightgrey;
color: lightgrey;
padding: 5px;
margin: 15px;
}
</style>
<script src="http://libs.baidu.com/jquery/1.10.2/jquery.min.js">
</script>
<script>
$(document).ready(function(){
  $("span").parents("ul").css({"color":"red","border":"2px solid red"});
});
</script>
</head>

<body class="ancestors">body (great-great-grandparent)
  <div style="width:500px;">div (great-grandparent)
    <ul>ul (grandparent)  
      <li>li (direct parent)
        <span>span</span>
      </li>
    </ul>   
  </div>
</body>

</html>

運行實例»
點擊"運行實例"按鈕查看線上實例


#jQuery parentsUntil() 方法
#parentsUntil() 方法傳回介於兩個給定元素之間的所有祖先元素。

下面的範例傳回介於<span> 與<div> 元素之間的所有祖先元素:

實例

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<style>
.ancestors *
{ 
	display: block;
	border: 2px solid lightgrey;
	color: lightgrey;
	padding: 5px;
	margin: 15px;
}
</style>
<script src="http://libs.baidu.com/jquery/1.10.2/jquery.min.js">
</script>
<script>
$(document).ready(function(){
  $("span").parentsUntil("div").css({"color":"red","border":"2px solid red"});
});
</script>
</head>

<body class="ancestors"> body (曾曾祖父元素)
  <div style="width:500px;">div (曾祖父元素)
    <ul>ul (祖父元素)  
      <li>li (父元素)
        <span>span</span>
      </li>
    </ul>   
  </div>
</body>

</html>

運行實例»
點擊"運行實例"按鈕查看線上實例

#