Skip to content
Permalink
Browse files

No need to do the closest match if no selectors are passed in.

  • Loading branch information
jeresig committed Dec 3, 2009
1 parent e534a31 commit 4daae7a79f43815935a2890d16904c5a052717f3
Showing with 34 additions and 17 deletions.
  1. +33 −16 src/event.js
  2. +1 −1 src/traversing.js
@@ -749,13 +749,30 @@ jQuery.fn.extend({
});

function liveHandler( event ) {
var stop = true, elems = [], args = arguments;
var stop = true, elems = [], selectors = [], args = arguments,
related, match, fn, elem, j, i,
live = jQuery.extend({}, jQuery.data( this, "events" ).live);

jQuery.each( jQuery.data( this, "events" ).live || [], function( i, fn ) {
if ( fn.live === event.type ) {
var elem = jQuery( event.target ).closest( fn.selector, event.currentTarget )[0],
related;
if ( elem ) {
for ( j in live ) {
if ( live[j].live === event.type ) {
selectors.push( live[j].selector );
}
}

console.log( event.type, selectors+"" );

// TODO: Make sure that duplicate selectors aren't run
match = jQuery( event.target ).closest( selectors, event.currentTarget );

console.log( "match", match, selectors+"" );

for ( i = 0, l = match.length; i < l; i++ ) {
for ( j in live ) {
fn = live[j];
elem = match[i].elem;
related = null;

if ( match[i].selector === fn.selector) {
// Those two events require additional checking
if ( fn.live === "mouseenter" || fn.live === "mouseleave" ) {
related = jQuery( event.relatedTarget ).closest( fn.selector )[0];
@@ -766,19 +783,19 @@ function liveHandler( event ) {
}
}
}
});
}

elems.sort(function( a, b ) {
return a.closer - b.closer;
});
console.log( "elems", elems );

jQuery.each(elems, function() {
event.currentTarget = this.elem;
event.data = this.fn.data;
if ( this.fn.apply( this.elem, args ) === false ) {
return (stop = false);
for ( i = 0, l = elems.length; i < l; i++ ) {
match = elems[i];
event.currentTarget = match.elem;
event.data = match.fn.data;
if ( match.fn.apply( match.elem, args ) === false ) {
stop = false;
break;
}
});
}

return stop;
}
@@ -58,7 +58,7 @@ jQuery.fn.extend({
if ( jQuery.isArray( selectors ) ) {
var ret = [], cur = this[0], selector;

if ( cur ) {
if ( cur && selectors.length ) {
for ( var i = 0, l = selectors.length; i < l; i++ ) {
selectors[i] = jQuery.expr.match.POS.test( selector ) ?
jQuery( selector, context || this.context ) :

1 comment on commit 4daae7a

@jeresig

This comment has been minimized.

Copy link
Member Author

jeresig commented on 4daae7a Dec 3, 2009

Oops, I accidentally committed my work-in-progress liveHandler rewrite in this commit :-/ sorry about that! I'll be landing the correct code soon.

Please sign in to comment.
You can’t perform that action at this time.