1

私のコードは、クローズアップで次のようになります。

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

a要素を選択し、それにIDを付加する方法を見つけました。ここで行う必要があるのは、その親<h2>要素を選択することですが、要素は選択しません<span>。どうすればそれを行うことができますか(JQueryが許可されています)?

編集:選択したを取得する<a>と、それらの配列が取得されます(ページにはこれらの構造がたくさんあります)。を書き込もうとするmyArray[someIndex].closest("h2")と、要素にメソッドがないというclosest()ことです。どうすればいいですか?

4

4 に答える 4

5

1つの方法は.parents()、セレクターを使用してjQueryのメソッドを使用することです。このようなもの。

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

アップデート:

セレクターでメソッドを使用し.closest()て、セレクターに一致する最も近い親のみを取得できます。

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

アップデート2:

プレーンなJavaScriptでそれを行うにはもう少し手間がかかります。それが最も効率的かどうかはわかりませんが、1つの方法は、で要素を選択し、プロパティ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ツリーを正確に2倍以上レベルアップしてみてください。

$("#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 に答える