zoukankan      html  css  js  c++  java
  • Jquery遍历之获取子级元素、同级元素和父级元素

    Jquery遍历之获取子级元素、同级元素和父级元素

      Jquery的遍历,其实就当前位置的元素相对于其他元素的位置的关系进行查找或选取HTML元素。以某项选择开始,并沿着这条线进行移动,或向上(父级)、或向下(子级)、或水平(同级),直到找到目标元素为止,这种移动也被成为对DOM进行遍历。

      其实对于DOM来说,这个不陌生,Jquery的遍历也就是在DOM树上上蹿下跳,当然这种上蹿下跳不是没有规则的,胡乱的找是让人鄙视的。通俗的说,在一颗树上(你也在树上,已经爬上去了,哈哈),以你所在的位置为起点,以树上有个桃子为目的地,你的这个起点也就是当前 this ,去移动去摘桃子的过程就是Jquery遍历,所以相对应的Jquery所衍生出的遍历方法可以分为三大类,即Jquery遍历之父级(祖先)、同级(同胞)和子级(后代)三种。

      Jquery遍历之父级

      parent()  返回当前被选元素的直接父元素;

      parents()  返回当前被选元素的所有父元素,直到文档的根部即<html>处为止;

      parentsUntil()  返回介于两个元素之间的所有当前元素的祖先元素;$("#id1").parentsUntil("#id5") 若这个id5是id1的父级元素,则此方法放回的是id1向上遍历到id5的所有元素。

      Jquery遍历之同级

       有许多方法让我们可以在DOM树上进行水平遍历。下面进行简单介绍,主要还是要实战操作。

      siblings()  返回被选元素的所有同胞(同级)元素;

      ////向下(next)

      next()    返回被选元素的下一个同胞元素;

      nextAll()    返回被选元素的所有跟随的同胞元素,即当前元素以下的所有同胞元素;

      nextUntil()    返回介于两个给定参数之间的所有跟随的同胞元素.

      ////向上(prev)

      prev()    返回被选元素的下一个同胞元素;

      prevAll()    返回被选元素的所有跟随的同胞元素,即当前元素以下的所有同胞元素;

      prevUntil()    返回介于两个给定参数之间的所有跟随的同胞元素.

      Jquery遍历之子级

      children()  返回被选元素的直接子元素,就是真正的儿子,不往孙子重孙那边去。

      find()    返回被选元素的后代元素,一路向下直到最后一个后代。

      Jquery遍历each()方法

      最后也是最为常用常见的方法,Jquery的each()方法,一般情况下我们遍历出来的是一个数组,通过遍历这个数组获得目的元素并对其修改,each()方法最好不过了。 

      each() 方法规定为每个匹配元素规定运行的函数。

      提示:返回 false 可用于及早停止循环。

      语法$(selector).each(function(index,element))

      参数index - 选择器的 index 位置

            element - 当前的元素(也可使用 "this" 选择器)

      结束语:

      很长很长的时间我对于DOM的理解模模糊糊,感觉抓住了点东西又感觉什么也没有学到,理论与实践总是有差别的,通过几个项目的实践,对于概念的理解更加透彻,只有实践才能让理论的理解更加成熟,相辅相成。很多的时间花费在了页面这一块上,界面的处理,界面数据的处理让我深深的陷入了这个泥潭,去年花了很长的时间狠狠的学习了一遍数据库知识,去年下半年花了点时间再次回顾js/Jquery,起码让我在这个泥潭中陷入的时间短暂一点,对于我一个刚刚出道的年轻人(好像不怎么年轻了),迷茫、无知、恐惧总是伴随,只有不断的学习才能让我短暂的得到安全感。

      说的有点多了,就这样吧,以后的日子还长着呢。希望得到各位的鼓励,谢谢!!!

     

    一、获取div下的子元素的个数

      $("div").children().length;

    二、获取div下的span子元素的个数

      $("div").children("span").length;

    (this).children("input:first-child").val();
    $(this).children("input:last-child").val();

    通过>选择器,$(".items>input:first")

    在这里转一篇《jQuery选择元素的方法大全》

    1. 先说说通过位置选择的几个操作:
    :first:默认情况下是相对整个页面来说的第一个,如:li:first表示整个页面的第一个li元素,而ul li:first表示整个页面的第一个li元素,并且是在ul下的子元素;
    :last:同上了,只是是最后一个而已;
    :first- child:为每个父元素匹配第一个子元素,如li:first-child返回每个ul的第一个li元素。可以这样理解,页面中的元素有相同的父元素 的,并且里面又包含li元素的,那么就取第一个li元素,每个子类集合都要进行判断,直到找出所有符合要求的li元素;
    :last-child:这个也与上面相对了,只是取的是最后一个;
    :
    only- child:返回所有没有兄弟节点的元素,注意,文本元素不是,也就是说类似这样的<div>hello<a href="">jquery</a></div>,对于这段会选出<a>元素;对 于$(”label:only-child“)会选出是label元素,同时它是它父类唯一的子元素的label元素;
    :nth-child(n):返回第n个子节点,n从1开始,如果n取0,那么就会选择所有的元素。如:[*]li:nth-child(2)返回li元素,并且该元素是其父元素的第二个子元素;
    :nth-child(even|odd):返回偶数或奇数的子节点;
    :nth-child(An+B):返回满足表达式An+B的所有子节点,比如3n+1返回所处位置为父节点子元素的是3的倍数加1的那个子元素;
    :even:页面范围内的处于偶数位置的元素,如:li:even返回全部偶数li元素;
    :odd:页面范围内的处于奇数位置的元素;
    :eq(n):第n个匹配的元素(n从0开始),如:li:eq(3)返回整个页面的第四个li元素,ul li:eq(1)返回页面中第一个ul元素下的第二个li元素,注意:只匹配一次就返回了;
    :gt(n):第n个匹配元素(不包括)之后的元素(n从0开始),如:ul:gt(2)返回从第3个ul开始的所有ul元素(含第三个);
    :lt(n):第n个匹配元素(不包括)之前的元素(n从0开始),如:ul:lt(2)返回从第0个和第1个ul元素;


    2. 利用css选择器进行选择:
    元素标签名:比如说$(”a“)会选出所有链接元素;
    #id:通过元素id进行选择,比如说$("#form1")会选择id为form1的元素;
    .class:通过元素的CSS类来选择,比如说$(".boldstyle")会选择CSS为boldstyle类的元素;
    标签 名#id.class:通过某类元素的id属性和class属性来选择,如:$(a#blog.boldStyle)会选择id为blog并且CSS类型 为.boldStyle类型的链接元素(<a id='blog' class='.boldStyle'>);
    父标签名 子标签名.class:通过选择父标签下的某种CSS类型的子元素,如:$(p a.redStyle)会选择p段落元素中的链接子元素a,且其css类型为.redStyle;


    3. 通过子选择器,容器选择器和属性选择器进行选择:
    *:匹配所有的元素,比如说:$(*)会把页面中的所有元素都返回;
    E:匹配标签名为E的所有元素,如$("a")返回所有链接元素;
    E F:匹配父元素E下的标签名为F的所有子元素(F可以为E的子类的子类,甚至更远);
    E>F:匹配父元素E下的所有标签名为F的直接子元素;
    E+F:匹配所有标签名为F的元素,并且有E类型的兄弟节点在该F元素之前(E,F紧挨着);
    E~F:匹配前面是任何兄弟节点E的所有元素F(E,F不必紧挨着);
    E:has(F):匹配标签名为E,至少有一个标签名为F的后代节点的所有元素E;
    E.C:匹配带有类名C的所有元素E。.C等效于*.C;
    E#I:匹配id为I的所有元素E,#I等效于*#I;
    E[A]:匹配带有属性A的所有元素E;
    E[A=V]:匹配所有属性A的值为V的元素E;
    E[A^=V]:匹配所有元素E,且A的属性值是V开头的;
    E[A$=V]:匹配所有元素E,且A的属性值是V结尾的;
    E[A*=V]:匹配所有元素E,且A的属性值中包含有V;


    4.利用jQuery自定义的选择器进行选择:
    :button:选择任何按钮类型的元素,包括input[type=submit]等等;
    :checkbox:选择复选框元素;
    :file:选择所有文件类型元素,即input[type=file];
    :image:选择表单中的图像元素,即input[type=image],注意此处和前面根据标签img选择图像有点不同哈;
    :input:选择表单元素,如<input>,<select>,<textarea>,<button>等;
    :radio:选择单选按钮元素;
    :reset:选择复位按钮元素,如input[type=reset],button[type=reset];
    :submit:选择提交按钮元素;
    :text:选择文本字段元素,即input[type=text];
    :animated:选择当前处于动态控制下的元素;
    :contains(hello):选择包含文本hello的元素;
    :header:选择标题元素,如<h1>;
    :parent:选择拥有后代节点(包括文本)的元素,而排除空元素;
    :selected:选择已选中的选项元素;
    :visible:选择可见元素;
    :enable:选择界面上已经可以使用的表单元素;
    :disabled:选择界面上被禁用的表单元素;
    :checked:选择已选中的复选框或单选按钮

  • 相关阅读:
    《ASP.NET Core跨平台开发从入门到实战》Web API自定义格式化protobuf
    .NET Core中文分词组件jieba.NET Core
    .NET Core 2.0及.NET Standard 2.0
    Visual Studio 2017 通过SSH 调试Linux 上.NET Core
    Visual Studio 2017 ASP.NET Core开发
    Visual Studio 2017正式版离线安装及介绍
    在.NET Core 上运行的 WordPress
    IT人员如何开好站立会议
    puppeteer(二)操作实例——新Web自动化工具更轻巧更简单
    puppeteer(一)环境搭建——新Web自动化工具(同selenium)
  • 原文地址:https://www.cnblogs.com/Jeely/p/11130347.html
Copyright © 2011-2022 走看看