jquery(四)jQuery遍历

通过 jQuery 遍历,您能够从被选(当前的)元素开始,轻松地在家族树中向上移动(祖先),向下移动(子孙),水平移动(同胞)。这种移动被称为对 DOM 进行遍历。

图示解释:

遍历 DOM 树

  • <div> 元素是 <ul> 的父元素,同时是其中所有内容的祖先。
  • <ul> 元素是 <li> 元素的父元素,同时是 <div> 的子元素
  • 左边的 <li> 元素是 <span> 的父元素,<ul> 的子元素,同时是 <div> 的后代。
  • <span> 元素是 <li> 的子元素,同时是 <ul> 和 <div> 的后代。
  • 两个 <li> 元素是同胞(拥有相同的父元素)。
  • 右边的 <li> 元素是 <b> 的父元素,<ul> 的子元素,同时是 <div> 的后代。
  • <b> 元素是右边的 <li> 的子元素,同时是 <ul> 和 <div> 的后代。

提示:祖先是父、祖父、曾祖父等等。后代是子、孙、曾孙等等。同胞拥有相同的父。

向上遍历 DOM 树

  • parent() 方法返回被选元素的直接父元素。
  • parents() 方法返回被选元素的所有祖先元素,它一路向上直到文档的根元素 (<html>)。
  • parentsUntil() 方法返回介于两个给定元素之间的所有祖先元素。
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style type="text/css" >
        .border{
            border:1px black solid;
        }

        .div1{
            width: 300px;
            height: 300px;
        }

        .div2{
            width:250px;
            height:250px;
            margin:10px;
        }
        .p{
            width:200px;
            height:200px;
            margin:10px;
        }
        .span{
            width:50px;
            height:50px;
            margin:20px;
        }
        .red{
            border:2px red solid;
        }

    </style>
    <script src="../jquery/jquery.js"></script>
    <script>
        $(function(){
            $("button").click(function(){
                var p1 = $("#span1").parent();
                p1.addClass("red")
            })

        })

    </script>
</head>
<body>
    <div id="div1" class="div1 border">
        div1
        <div id="div2" class="div2 border">
            div2
            <p class="p border">
                段落1
                <span id="span1" class="span border">span1</span>
            </p>
        </div>
    </div>
    <button>点击</button>
</body>
</html>

将 var p1 = $("#span1").parent();替换成var p1 = $("#span1").parents();
 
 

将var p1 = $("#span1").parents();替换为var p1 = $("#span1").parents("div"); 选取html到span间所有div元素

将var p1 = $("#span1").parents("div"); 替换成var p1 = $("#span1").parentsUntil("#div1");

选取div1到span中间的所有元素

向下遍历 DOM 树

  • children() 方法返回被选元素的所有直接子元素
  • find() 方法返回被选元素的后代元素,一路向下直到最后一个后代

将上诉例子中 var p1 = $("#span1").parentsUntil("#div1"); 替换成 var p1 = $("#div1").children();查找div1下一级子元素

将上诉例子中 var p1 = $("#div1").children(); 替换成 var p1 = $("#div1").find("*"); 查找所有div1下的子元素

将上诉例子中 var p1 = $("#div1").find("*"); 替换成 var p1 = $("#div1").find("p"); 查找所有div1下的指定子元素P

在 DOM 树中水平遍历

  • siblings() 方法返回被选元素的所有同胞元素。
  • next() 方法返回被选元素的下一个同胞元素。
  • nextAll() 方法返回被选元素的所有跟随的同胞元素。
  • nextUntil() 方法返回介于两个给定参数之间的所有跟随的同胞元素。
  • prev()
  • prevAll()
  • prevUntil()
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style type="text/css">
        .border{
            width: 300px;
            height: 20px;
            margin-top: 10px;
            border:1px black solid;
        }
        .red{
            border:2px red solid;
        }
    </style>
    <script src="../jquery/jquery.js"></script>
    <script>
        $(function(){
            $("li").addClass("border");
            $("button").click(function(){
                var li = $("#li3").siblings();
                li.addClass("red");
            })

        })
    </script>
</head>

<body>
    <div>
        <div>
            <button>点击</button>
        </div>
        <ul>
            <li>一</li>
            <li>二</li>
            <li>三</li>
            <li>四
                <ul>
                    <li>1</li>
                    <li>2</li>
                    <li id="li3">3</li>
                </ul>
            </li>
        </ul>
    </div>
</body>
</html>

将  var li = $("#li3").siblings();  替换为  var li = $("#li1").next();

将  var li = $("#li1").next(); 替换为  var li = $("#li1").nextAll();

jQuery 遍历 - 过滤

三个最基本的过滤方法是:first(), last() 和 eq(),它们允许您基于其在一组元素中的位置来选择一个特定的元素。

其他过滤方法,比如 filter() 和 not() 允许您选取匹配或不匹配某项指定标准的元素。

下面的例子返回带有类名 "intro" 的所有 <p> 元素:

$(document).ready(function(){
  $("p").filter(".intro");
});

下面的例子返回不带有类名 "intro" 的所有 <p> 元素:

$(document).ready(function(){
  $("p").not(".intro");
});

猜你喜欢

转载自blog.csdn.net/baiyan3212/article/details/83118919