前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >获取DOM节点的方法汇总

获取DOM节点的方法汇总

作者头像
Chor
发布2019-11-07 19:38:12
4K0
发布2019-11-07 19:38:12
举报
文章被收录于专栏:前端之旅前端之旅

1.原生获取DOM节点的方法

1.1 通过顶层document节点获取:
  • document.getElementById("ID")
  • document.getElementsByName("Name")
  • document.getElementsByClassName("className")
  • document.getElementsByTagName("tagName") 注意,前两个都是document节点的专有方法,其他节点不能使用,尤其不能在ID下获取ID,这是非常愚蠢的做法。
1.2 通过父节点获取:
  • parentObj.firstChild:获取父节点下的第一个子节点(会将空格和换行计入),这个属性是可以递归使用的,即支持parentObj.firstChild.firstChild...的形式,如此就可以获得更深层次的节点。
  • parentObj.firstElementChild:获取父节点下的第一个子元素节点
  • parentObj.lastChild:获取父节点下的最后一个子节点(会将空格和换行计入)。与firstChild一样,它也可以递归使用。
  • parentObj.lastElementChild:获取父节点下的最后一个子元素节点
  • parentObj.childNodes:获取父节点下的所有直接子节点(会将空格和换行计入)
  • parentObj.children:获取父节点下的直接子元素节点。
  • parentObj.getElementsByTagName("tagName")
  • parentObj.getElementsByClassName("className")
1.3 通过子节点获取:
  • childObj.parentNode : 获取子节点的直接父节点。w3c标准
  • childObj.parentElement : 获取子节点的直接父节点。IE标准
1.4 通过兄弟节点获取:
  • neighbourObj.parentNode.children[..] :通过父节点间接获取已知节点的兄弟节点
  • neighbourObj.previousSibling:获取已知节点的上一个兄弟节点(会将空格和换行计入)
  • neighbourObj.previousElementSibling: 获取已知节点的上一个兄弟元素节点
  • neighbourObj.nextSibling:获取已知节点的下一个兄弟节点(会将空格和换行计入)
  • neighbourObj.nextElementSibling: 获取已知节点的下一个兄弟元素节点
1.5 通过CSS选择器获取:

采用CSS选择器的语法,即#abcdiv.abc,#abc .abc等。

  • document.querySelector("..."): 返回匹配的第一个节点
  • document.querySelectorAll("..."): 返回匹配的所有节点

2.jQuery 获取 DOM 节点的方法

方法

用途

祖先

$("#A").parent()

获取A节点的直接父节点

$("#A").parents()

获取A节点的所有祖先节点

$("#A").parents(".B")

获取A节点的所有祖先节点中的B节点

$("#A").closet("B")

获取A节点的第一个为B的祖先节点

后代

$("#A").children()

获取A节点的直接子节点

$(".A").children(".B")

获取A节点的所有为B的直接子节点

$("#A").find("*")

获取A节点的所有后代节点

$("#A").find(".B")

获取A节点的所有为B的后代节点

同胞

$("#A").prev()

获取A节点的上一个兄弟节点

$("#A").prevAll()

获取A节点之前的所有兄弟节点

$("#A").prevUntil(".B")

获取A节点之前、B节点之后的所有兄弟节点

$("#A").next()

获取A节点的下一个兄弟节点

$("#A").nextAll()

获取A节点之后的所有兄弟节点

$("#A").nextUntil(".B")

获取A节点之后、B节点之前的所有兄弟节点

$("#A").siblings()

获取A节点的所有兄弟节点

$("#A").siblings(".B")

获取A节点的所有为B的兄弟节点

过滤

$("A B").first()

获取第一个A节点的第一个B节点

$("A B").last()

获取最后一个A节点的最后一个B节点

$(".A").eq(0)

获取所有A节点中的第一个A节点

$("A").filter("B")

获取A节点中的所有B节点

$("A").not("B")

获取A节点中的不包括B节点的所有节点

3.HTMLCollection 和 NodeList

我们都知道,当获得所有节点(如:getElementsByTagName)或者获得所有子元素(如:element.childNodes)时,实际上返回的是包含一些DOM节点的集合,这个集合要么是 HTMLCollection,要么是 NodeList,两者其实都是类数组的对象。

HTMLCollectionNodeList的共同点:
  • 都是类数组对象,都有length属性;
  • 都有共同的方法:item,可以通过item(index)或者item(id)来访问返回结果中的元素;
  • 一般都是实时变动的(live),document上的更改会反映到相关对象上(!!注意:document.querySelectorAll返回的NodeList不是实时的);
HTMLCollectionNodeList的不同点:
  • NodeList可以包含任何节点类型,HTMLCollection只包含元素节点(elementNode)。
  • HTMLCollectionNodeList多一项方法:NamedItem,可以通过传递id或name属性来获取节点信息
规定返回结果:
  1. node.childNodes 结果返回类型是 NodeList,即所有子节点;
  2. node.children 结果返回类型是 HTMLCollection ,即所有子元素节点;
  3. getElementsByXXX 结果返回类型是HTMLCollection
  4. 旧版本浏览器(尤其是IE)中,node.children 结果返回类型是 NodeList
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-03-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.原生获取DOM节点的方法
    • 1.1 通过顶层document节点获取:
      • 1.2 通过父节点获取:
        • 1.3 通过子节点获取:
          • 1.4 通过兄弟节点获取:
            • 1.5 通过CSS选择器获取:
            • 2.jQuery 获取 DOM 节点的方法
            • 3.HTMLCollection 和 NodeList
              • HTMLCollection和NodeList的共同点:
                • HTMLCollection和NodeList的不同点:
                  • 规定返回结果:
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档