Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
49 changes: 11 additions & 38 deletions src/traversing.js
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
define([
"./core",
"./var/indexOf",
"./traversing/var/dir",
"./traversing/var/siblings",
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We already have a local sibling function so I named it siblings.

"./traversing/var/rneedsContext",
"./core/init",
"./traversing/findFilter",
"./selector"
], function( jQuery, indexOf, rneedsContext ) {
], function( jQuery, indexOf, dir, siblings, rneedsContext ) {

var rparentsprev = /^(?:parents|prev(?:Until|All))/,
// Methods guaranteed to produce a unique set when starting from a unique set
Expand All @@ -16,35 +18,6 @@ var rparentsprev = /^(?:parents|prev(?:Until|All))/,
prev: true
};

jQuery.extend({
dir: function( elem, dir, until ) {
var matched = [],
truncate = until !== undefined;

while ( (elem = elem[ dir ]) && elem.nodeType !== 9 ) {
if ( elem.nodeType === 1 ) {
if ( truncate && jQuery( elem ).is( until ) ) {
break;
}
matched.push( elem );
}
}
return matched;
},

sibling: function( n, elem ) {
var matched = [];

for ( ; n; n = n.nextSibling ) {
if ( n.nodeType === 1 && n !== elem ) {
matched.push( n );
}
}

return matched;
}
});

jQuery.fn.extend({
has: function( target ) {
var targets = jQuery( target, this ),
Expand Down Expand Up @@ -135,10 +108,10 @@ jQuery.each({
return parent && parent.nodeType !== 11 ? parent : null;
},
parents: function( elem ) {
return jQuery.dir( elem, "parentNode" );
return dir( elem, "parentNode" );
},
parentsUntil: function( elem, i, until ) {
return jQuery.dir( elem, "parentNode", until );
return dir( elem, "parentNode", until );
},
next: function( elem ) {
return sibling( elem, "nextSibling" );
Expand All @@ -147,22 +120,22 @@ jQuery.each({
return sibling( elem, "previousSibling" );
},
nextAll: function( elem ) {
return jQuery.dir( elem, "nextSibling" );
return dir( elem, "nextSibling" );
},
prevAll: function( elem ) {
return jQuery.dir( elem, "previousSibling" );
return dir( elem, "previousSibling" );
},
nextUntil: function( elem, i, until ) {
return jQuery.dir( elem, "nextSibling", until );
return dir( elem, "nextSibling", until );
},
prevUntil: function( elem, i, until ) {
return jQuery.dir( elem, "previousSibling", until );
return dir( elem, "previousSibling", until );
},
siblings: function( elem ) {
return jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem );
return siblings( ( elem.parentNode || {} ).firstChild, elem );
},
children: function( elem ) {
return jQuery.sibling( elem.firstChild );
return siblings( elem.firstChild );
},
contents: function( elem ) {
return elem.contentDocument || jQuery.merge( [], elem.childNodes );
Expand Down
20 changes: 20 additions & 0 deletions src/traversing/var/dir.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
define([
"../../core"
], function( jQuery ) {

return function( elem, dir, until ) {
var matched = [],
truncate = until !== undefined;

while ( (elem = elem[ dir ]) && elem.nodeType !== 9 ) {
if ( elem.nodeType === 1 ) {
if ( truncate && jQuery( elem ).is( until ) ) {
break;
}
matched.push( elem );
}
}
return matched;
};

});
15 changes: 15 additions & 0 deletions src/traversing/var/siblings.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
define( function() {

return function( n, elem ) {
var matched = [];

for ( ; n; n = n.nextSibling ) {
if ( n.nodeType === 1 && n !== elem ) {
matched.push( n );
}
}

return matched;
};

});