1. ホーム
  2. javascript

[解決済み] 兄弟ノードを選択する方法はありますか?

2022-07-09 22:25:21

質問

パフォーマンス上の理由から、選択したノードの兄弟ノードのみを選択する方法を見つけようとしています。

例えば

<div id="outer">
  <div id="inner1"></div>
  <div id="inner2"></div>
  <div id="inner3"></div>
  <div id="inner4"></div>
</div>

inner1ノードを選択した場合、その兄弟ノードにアクセスする方法はありますか? inner2-4 ノードにアクセスする方法はありますか?

どのように解決する?

そうですね...確かに...親にアクセスして、次に子にアクセスすればいいんですね。

 node.parentNode.childNodes[]

または...jQueryを使用します。

$('#innerId').siblings()

編集部:Cletusはいつもながら感心させられます。私はさらに掘り下げました。これは、jQueryが本質的に兄弟を取得する方法です。

function getChildren(n, skipMe){
    var r = [];
    for ( ; n; n = n.nextSibling ) 
       if ( n.nodeType == 1 && n != skipMe)
          r.push( n );        
    return r;
};

function getSiblings(n) {
    return getChildren(n.parentNode.firstChild, n);
}