1

我的代码看起来像这样,特写:

<h2>
<span class="stuff">[<a id="someid">stuff</a>]</span> <span class="moreStuff">Another test</span>
</h2>

我找到了一种方法来选择我的a元素,并为其附加一个 id。我现在需要做的是选择它的父<h2>元素,而不是<span>元素。我该怎么做(允许使用 JQuery)?

编辑:当我检索选定<a>的 s 时,我得到一个数组(我的页面上有很多这些结构)。当我尝试编写myArray[someIndex].closest("h2")时,它说该元素没有closest()方法。我该怎么办?

4

4 回答 4

5

一种方法是使用.parents()带有选择器的jQuery 方法。像这样的东西。

$("#someid").parents("h2");

更新:

您可以将该.closest()方法与选择器一起使用,以仅获取与选择器匹配的最接近的父级。

$("#someid").closest("h2");

更新 2:

使用纯 JavaScript 会做更多的工作。不确定它是否是最有效的,但一种方法是选择元素,然后通过属性document.getElementById()获取对其父级的引用。parentNode然后您必须检查它是否是一个h2元素,如果不是,则查看该元素的父节点,依此类推。

您可以检查 jQuery 源代码,看看他们是如何实现最接近的方法的。

于 2012-09-21T06:37:04.477 回答
1

<h2>不是的父级,但<a>它是一个祖先,用于.closest()选择它

$("#someid").closest("h2");
于 2012-09-21T06:42:41.387 回答
1

尝试使用.parent()将 DOM 树完全提升一倍或更高级别。

$("#someid").parent().parent();
于 2012-09-21T06:55:09.057 回答
1

我只是需要同样的东西。这里有一个香草 javascript 变体:

function findParent(startElement, tagName) {
  let currentElm = startElement;
  while (currentElm != document.body) {
    if (currentElm.tagName.toLowerCase() == tagName.toLowerCase()) { return currentElm; }
    currentElm = currentElm.parentElement;
  }
  return false;
}
于 2021-11-17T09:03:37.713 回答