javascript - jQuery 的 .parents() 方法的纯 JavaScript 等价物是什么?

标签 javascript jquery code-translation

<分区>

很抱歉提出此类问题,但我在You Might Not Need jQuery 上找不到答案。或在线其他任何地方,我真的很想知道:

jQuery 的 .parents() 方法的纯 JavaScript 等价物是什么?

例如,如果知道如何在纯 JavaScript 中执行此操作会很棒:

jQuery(element).parents('.className');

最佳答案

DOM API 中没有一个函数/属性等同于 jQuery 的 parents() .有 parentNode属性(以及 Oriol points outparentElement 属性,这将阻止您从 document.documentElementdocument ),这是您访问它的元素的父节点(或父元素),或者null如果没有。大致匹配 jQuery 的 parents() ,你可以在它上面循环(例如,获取 parentNode/parentElementparentNode/parentElement 等)来找到所有的 parent 。作为squint notes , 在每个级别的模糊现代浏览器上你可以使用 matches 检查父级是否与选择器匹配(当您将选择器传递给它时,将 jQuery 的行为与 parents() 匹配)。

jQuery 采用基于集合的方法进行 DOM 操作和遍历,而 DOM API 采用基于元素/节点的方法。

例子:

var elm = document.getElementById("target");
var parents = getParents(elm);
console.log(Array.prototype.map.call(
  parents,
  function(e) {
    return e.nodeName + (e.id ? "#" + e.id : "");
  }
).join(", "));
function getParents(e) {
  var result = [];
  for (var p = e && e.parentElement; p; p = p.parentElement) {
    result.push(p);
  }
  return result;
}
<div id="outermost">
  <div id="middle">
    <div id="inner">
      <div id="target"></div>
    </div>
  </div>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

关于javascript - jQuery 的 .parents() 方法的纯 JavaScript 等价物是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38469830/

相关文章:

javascript - 无法在 javascript 中回显 php 值

javascript - 老式 JavaScript 类和高级 JS 缩小问题

javascript - 无法通过 auth.onAuthStateChanged 中的 currentUser 访问 displayName - Firebase

javascript - 选中复选框时显示隐藏按钮并隐藏可见按钮

javascript - jQuery 可排序标签点击事件不起作用

python - Gstreamer 编辑服务。播放真实的视频文件。 GESAsset 元素(从 Python 翻译为 C)

javascript - 是否可以将 C 代码编译为 Javascript 代码?

javascript - 单击显示隐藏的 Div

python - 有没有免费的 Python 到 C 的翻译器?

javascript - jQuery Mobile 的最低要求