jQuery 橫向遍歷

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

在 DOM 樹中橫向遍歷

在邏輯關係中,兄弟姐妹是共享同一父母的那些元素。

jQuery 提供了幾種方法,如 siblings()next()nextAll()nextUntil()prev()prevAll()prevUntil() ,你可以使用它們來橫向遍歷 DOM 樹。

jQuery siblings() 方法

jQuery siblings() 方法用於獲取所選元素的兄弟元素。

以下示例將在文件就緒時通過新增類 .highlight 來突出顯示 <p> 元素的兄弟節點,也就是 <h1><ul> 元素。

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>jQuery siblings() 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(){
    $("p").siblings().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>

你可以選擇在 siblings() 方法中包含一個或多個選擇器作為引數來過濾搜尋兄弟節點。下面的例子將在 <p> 元素的兄弟元素也就是 <ul> 元素的周圍新增邊框。

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>jQuery siblings() 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(){
    $("p").siblings("ul").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 next() 方法

jQuery next() 方法用於獲取緊隨其後的兄弟,即所選元素的下一個兄弟元素。以下示例將突出顯示 <p> 元素的下一個兄弟 <ul> 元素。

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>jQuery next() 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(){
    $("p").next().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 nextAll() 方法

jQuery nextAll() 方法用於獲取所選元素的所有後續兄弟元素。

以下示例將突出顯示 <p> 旁邊元素的所有兄弟節點。

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>jQuery nextAll() 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(){
    $("p").nextAll().addClass("highlight");
});
</script>
</head>
<body>
    <div class="container">    
        <h1>Hello World</h1>
        <p>This is a <em>simple paragraph</em>.</p>
        <p>This is another paragraph.</p>
        <ul>
            <li>Item One</li>
            <li>Item Two</li>
        </ul>
    </div>    
</body>
</html>

jQuery nextUntil() 方法

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

以下示例將突出顯示除 <ul> 元素之外的 <h1> 元素的所有後續兄弟元素,即突出顯示 <p> 元素。

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>jQuery nextUntil() 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(){
    $("h1").nextUntil("ul").addClass("highlight");
});
</script>
</head>
<body>
    <div class="container">    
        <h1>Hello World</h1>
        <p>This is a <em>simple paragraph</em>.</p>
        <p>This is another paragraph.</p>
        <ul>
            <li>Item One</li>
            <li>Item Two</li>
        </ul>
    </div>    
</body>
</html>

jQuery prev() 方法

jQuery prev() 方法用於獲取前一個兄弟,即所選元素的前一個兄弟元素。以下示例將突出顯示 <ul> 元素的前一個兄弟元素,也就是 <p> 元素。

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>jQuery prev() 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(){
    $("ul").prev().addClass("highlight");
});
</script>
</head>
<body>
    <div class="container">    
        <h1>Hello World</h1>
        <p>This is a <em>simple paragraph</em>.</p>
        <p>This is another paragraph.</p>
        <ul>
            <li>Item One</li>
            <li>Item Two</li>
        </ul>
    </div>    
</body>
</html>

jQuery prevAll() 方法

jQuery prevAll() 方法用於獲取所選元素的所有前面的兄弟節點。

以下示例將突出顯示 <ul> 元素前面的所有兄弟節點。

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>jQuery prevAll() 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(){
    $("ul").prevAll().addClass("highlight");
});
</script>
</head>
<body>
    <div class="container">    
        <h1>Hello World</h1>
        <p>This is a <em>simple paragraph</em>.</p>
        <p>This is another paragraph.</p>
        <ul>
            <li>Item One</li>
            <li>Item Two</li>
        </ul>
    </div>    
</body>
</html>

jQuery prevUntil() 方法

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

以下示例將突出顯示除 <h1> 元素之外的 <ul> 元素的所有先前兄弟元素,即突出顯示 <p> 元素。

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>jQuery prevUntil() 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(){
    $("ul").prevUntil("h1").addClass("highlight");
});
</script>
</head>
<body>
    <div class="container">    
        <h1>Hello World</h1>
        <p>This is a <em>simple paragraph</em>.</p>
        <p>This is another paragraph.</p>
        <ul>
            <li>Item One</li>
            <li>Item Two</li>
        </ul>
    </div>    
</body>
</html>