这里使用parentNode好?还是parentElement好?

这里使用parentNode好?还是parentElement好?

这是bootstrap中的一段代码,用来查找一个元素的祖先元素中所有匹配selector的元素。
我觉的应该使用parentElement更合适一些。

  • closetElement上一的一个方法。
  • 要查找的应该是Element,而不是像Text,Comment这样的Node

当然这里使用parentNode也是可行的,一般会返回一个Elment,因为可以包含其他元素的一般都是Element

// bootstrap/js/src/dom/selector-engine.js
  parents(element, selector) {
    const parents = []
    let ancestor = element.parentNode.closest(selector)

    while (ancestor) {
      parents.push(ancestor)
      ancestor = ancestor.parentNode.closest(selector)
    }

    return parents
  },
阅读 1.2k
avatarAI BotBETA

这是一个很好的问题,关于在JavaScript中parentNodeparentElement的选择。首先,让我们了解这两个属性的区别:

  • parentNode: 这是一个标准的DOM(文档对象模型)属性,它返回节点的父节点。这意味着它会考虑所有类型的父节点,包括元素节点、文本节点、注释节点等。
  • parentElement: 这也是一个DOM属性,但它只返回父元素节点。如果父节点不是元素节点,则返回null。

考虑到你提供的Bootstrap代码示例,这段代码正在寻找具有特定选择器的所有祖先元素。在这种情况下,使用parentElement是更合适的选择,因为你的目标是只查找元素节点,而不是其他类型的节点。

如果你使用parentNode,可能会找到一些意想不到的节点,比如文本节点或注释节点,这可能不是你想要的结果。

因此,结论是:在Bootstrap的这段代码中,使用parentElement是更好的选择。

1 个回答

主要是还可能是这个吧。

parentNode 是指定节点的父节点。一个元素节点的父节点可能是一个元素(Element)节点,也可能是一个文档(Document)节点,或者是个文档碎片(DocumentFragment)节点。

image.png

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题