JavaScript 学习-44.jQuery 遍历查找方法

前言

通过 jQuery 遍历,从被查找当前元素开始,在家族树中向上移动(祖先),向下移动(子孙),水平移动(兄弟),这种移动被称为对 DOM 进行遍历。

查找祖先元素

向上遍历 DOM 树,查找父元素和祖先元素

  • parent() 查找父元素
  • parents() 查找父元素以及祖先元素,一直到根节点html

示例

<div id="demo">
    <h3>jquery 遍历</h3>
    <p id="p" class="text-info">hello world</p>
    <form>
        <p id="p1" class="text-info">用户登录</p>
        <div>
            <label for="user">用户名</label>
            <input id="user" type="text" name="username" placeholder="请输入">
        </div>
        <div>
            <input type="submit" value="提交按钮">
        </div>
    </form>
</div>

查找父元素和祖先元素

    // 查找id=p1父元素
    p = $('#p1').parent();   // form
    console.log(p);
    // 查找id=p1父元素以及祖先元素
    ps = $('#p1').parents();   // [form, div#demo, body, html]
    console.log(ps);

查找子孙元素

向上遍历 DOM 树,查找子元素和子孙元素

  • children() 不传参数查找所有子元素,传参数查找指定子元素
  • find() 查找后代元素,一路向下直到最后一个后代

children() 不传参数查找所有子元素

   // 查找全部子元素
    ch = $('form').children();   //[p#p1.text-info, div, div]
    console.log(ch);

children() 传参数查找指定的子元素

   // 查找指定子元素
    ch1 = $('form').children('#p1');   //[p#p1.text-inf, div, div]
    console.log(ch1);
    ch2 = $('form').children('div');   //[div, div]
    console.log(ch2);
    ch3 = $('form').children('div:first');   //子元素第一个div
    console.log(ch3);

find() 查找指定后代元素

    // 查找指定后代元素
    ch1 = $('form').find('#p1');   //[p#p1.text-info]
    console.log(ch1);
    ch2 = $('form').find('#user');   //[input#user]
    console.log(ch2);
    ch3= $('form').find('[type="submit"]');   //[input]
    console.log(ch3);

查找兄弟元素

在 DOM 树中水平遍历,有许多有用的方法让我们在 DOM 树进行水平遍历:

语法 描述
siblings() 被选元素的所有兄弟元素
next() 被选元素的下一个兄弟元素
nextAll() 被选元素的所有后面的兄弟元素
nextUntil() 介于两个给定参数之间的所有跟随的兄弟元素
prev() 被选元素的上一个兄弟元素
prevAll() 被选元素的所有前面的兄弟元素
prevUntil() 介于两个给定参数之间的所有的兄弟元素

示例

    // siblings() 所有兄弟元素
    a = $('#p').siblings();   //[h3, form]
    console.log(a);
    // next() 下一个兄弟
    b = $('#p').next();   //[form]
    console.log(b);
    c = $('#p').nextAll();   //[form]
    console.log(c);
    d =  $('#p').prev();   //[h3]
    console.log(d);
    e =  $('#p').prevAll();   //[h3]
    console.log(e);

查询结果过滤

从查询结果中继续筛选,可以按查询结果的顺序按下标取值

  • first() 返回查询结果中第一个元素
  • last() 返回查询结果中最后一个元素
  • eq() 返回指定索索引的元素,下标从0开始

示例

    // first() 第一个结果
    a1 = $('p').first();
    console.log(a1);
    // last() 最后一个
    a2 = $('p').last();
    console.log(a2);
    // eq() 下标取值
    a3 = $('p').eq(0);
    console.log(a3);
    a4 = $('p').eq(1);
    console.log(a4);

filter() 和not()

filter() 是从查询结果集中筛选符合条件的
not() 刚好跟 filter() 相反,删除不满足条件的

示例

    // filter()
    a1 = $('p').filter('#p');
    console.log(a1);
    // not()
    a2 = $('p').not('#p');
    console.log(a2);
posted @ 2022-06-08 16:23  上海-悠悠  阅读(237)  评论(0编辑  收藏  举报