Existuje způsob, jak vybrat sourozenecké uzly?

Z určitých důvodů výkonu se snažím najít způsob, jak vybrat pouze sourozenecké uzly vybraného uzlu.

Například,

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

Pokud jsem vybral uzel inner1, existuje způsob, jak získat přístup k jeho sourozencům, inner2-4 uzly?

Odpověď

No… jistě… stačí se obrátit na rodiče a potom na děti.

 node.parentNode.childNodes[]

nebo… pomocí jQuery:

$('#innerId').siblings()

Edit:Cletus je jako vždy inspirativní. Kopal jsem dál. jQuery získává sourozence v podstatě takto:

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);
}