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