Commit d920ac68 authored by Dave Methvin's avatar Dave Methvin

Simplify the `.closest(Array)` code since we no longer use it internally.

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 https://github.com/jquery/jquery/commit/70e2e32e0eb03607ad0c8b7752dbd7747da47164 for that commit.
parent 6eb75676
...@@ -86,35 +86,20 @@ jQuery.fn.extend({ ...@@ -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;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment