Skip to content

Commit

Permalink
Simplify the .closest(Array) code since we no longer use it interna…
Browse files Browse the repository at this point in the history
…lly.

It was previously used in liveHandler for delegated events, but is now baked in to events.js. The signature is a strange one since it returns an array of matches, *not* a chainable jQuery object. I've marked it as deprecated.

The code is simplified by two things: 1) We don't care about optimizing the duplicate selectors case, and 2) `.is()` now handles positional selectors by looking for set membership, which eliminates the workaround that was being applied here. See 70e2e32 for that commit.
  • Loading branch information
dmethvin committed Sep 23, 2011
1 parent 6eb7567 commit d920ac6
Showing 1 changed file with 9 additions and 24 deletions.
33 changes: 9 additions & 24 deletions src/traversing.js
Expand Up @@ -86,35 +86,20 @@ jQuery.fn.extend({
closest: function( selectors, context ) { closest: function( selectors, context ) {
var ret = [], i, l, cur = this[0]; var ret = [], i, l, cur = this[0];


// Array // Array (deprecated as of jQuery 1.7)
if ( jQuery.isArray( selectors ) ) { if ( jQuery.isArray( selectors ) ) {
var match, selector, var level = 1;
matches = {},
level = 1;

if ( cur && selectors.length ) {
for ( i = 0, l = selectors.length; i < l; i++ ) {
selector = selectors[i];

if ( !matches[ selector ] ) {
matches[ selector ] = POS.test( selector ) ?
jQuery( selector, context || this.context ) :
selector;
}
}


while ( cur && cur.ownerDocument && cur !== context ) { while ( cur && cur.ownerDocument && cur !== context ) {
for ( selector in matches ) { for ( i = 0; i < selectors.length; i++ ) {
match = matches[ selector ];


if ( match.jquery ? match.index( cur ) > -1 : jQuery( cur ).is( match ) ) { if ( jQuery( cur ).is( selectors[ i ] ) ) {
ret.push({ selector: selector, elem: cur, level: level }); ret.push({ selector: selectors[ i ], elem: cur, level: level });
}
} }

cur = cur.parentNode;
level++;
} }

cur = cur.parentNode;
level++;
} }


return ret; return ret;
Expand Down

0 comments on commit d920ac6

Please sign in to comment.