For some performance reasons, I am trying to find a way to select only sibling nodes of the selected node.
For example,
<div id="outer"> <div id="inner1"></div> <div id="inner2"></div> <div id="inner3"></div> <div id="inner4"></div> </div>
If I selected inner1 node, is there a way for me to access its siblings, inner2-4
nodes?
Advertisement
Answer
Well… sure… just access the parent and then the children.
node.parentNode.childNodes[]
or… using jQuery:
$('#innerId').siblings()
Edit: Cletus as always is inspiring. I dug further. This is how jQuery gets siblings essentially:
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); }