jQuery 遍歷 - 祖先

在本教程中,你將學習如何使用 jQuery 遍歷 DOM 樹。

遍歷 DOM 樹

在邏輯關係中,祖先是父母、祖父母、曾祖父母等等。

jQuery 提供了有用的方法,例如 parent()parents()parentsUntil(),可以使用 DOM 樹遍歷了單個或多個級別輕鬆獲得父母元素或層次結構中的一個元素的其他祖先。

jQuery parent() 方法

jQuery parent() 方法用於獲取所選元素的直接父級。

以下示例將在文件就緒後通過新增類 .highlight 來突出顯示 <li> 的直接父元素,即 <ul>

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>jQuery parent() Demo</title>
<style type="text/css">
    .highlight{
        background: yellow;
    }        
</style>
<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
    $("li").parent().addClass("highlight");
});
</script>
</head>
<body>
    <div class="container">    
        <h1>Hello World</h1>
        <p>This is a <em>simple paragraph</em>.</p>
        <ul>
            <li>Item One</li>
            <li>Item Two</li>
        </ul>
    </div>    
</body>
</html>

jQuery parents() 方法

jQuery parents() 方法用於獲取所選元素的祖先。

下面的例子將 <li> 的所有祖先元素,即 <ul><div><body><html> 元素,的周圍新增邊框。

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>jQuery parents() Demo</title>
<style type="text/css">
    *{
        margin: 10px;
    }
    .frame{
        border: 2px solid green;
    }        
</style>
<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
    $("li").parents().addClass("frame");
});
</script>
</head>
<body>
    <div class="container">    
        <h1>Hello World</h1>
        <p>This is a <em>simple paragraph</em>.</p>
        <ul>
            <li>Item One</li>
            <li>Item Two</li>
        </ul>
    </div>    
</body>
</html>

你可以選擇在 parents() 方法中包含一個或多個選擇器作為引數來過濾搜尋祖先。下面的例子將在 <li> 元素的祖先元素,也就是 <div> 元素,的周圍來新增邊框。

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>jQuery parents() Demo</title>
<style type="text/css">
    *{
        margin: 10px;
    }
    .frame{
        border: 2px solid green;
    }        
</style>
<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
    var arr = $("li").parents("div").addClass("frame");
});
</script>
</head>
<body>
    <div class="container">    
        <h1>Hello World</h1>
        <p>This is a <em>simple paragraph</em>.</p>
        <ul>
            <li>Item One</li>
            <li>Item Two</li>
        </ul>
    </div>    
</body>
</html>

jQuery parentsUntil() 方法

jQuery parentsUntil() 方法用於獲取所有祖先,但不包括選擇器匹配的元素。簡單來說,我們可以說它返回 DOM 層次結構中兩個給定元素之間的所有祖先元素。

以下示例將在 <li><html> 之外的所有祖先元素,也就是 <ul><div><body> 元素,的周圍新增邊框。

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>jQuery parentsUntil() Demo</title>
<style type="text/css">
    *{
        margin: 10px;
    }
    .frame{
        border: 2px solid green;
    }        
</style>
<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
    $("li").parentsUntil("html").addClass("frame");
});
</script>
</head>
<body>
    
        <h1>Hello World</h1>
        <p>This is a <em>simple paragraph</em>.</p>
        <ul>
            <li>Item One</li>
            <li>Item Two</li>
        </ul>
    
</body>
</html>