Skip to content

Commit

Permalink
Extracted the logic for copying events from one jQuery set to another…
Browse files Browse the repository at this point in the history
…, makes it easier to work with disconnected DOM nodes.
  • Loading branch information
jeresig committed Dec 2, 2009
1 parent 391f83b commit 62436f4
Showing 1 changed file with 20 additions and 15 deletions.
35 changes: 20 additions & 15 deletions src/manipulation.js
Expand Up @@ -168,21 +168,8 @@ jQuery.fn.extend({


// Copy the events from the original to the clone // Copy the events from the original to the clone
if ( events === true ) { if ( events === true ) {
var orig = this.find("*").andSelf(), i = 0; cloneCopyEvent( this, ret );

cloneCopyEvent( this.find("*"), ret.find("*") );
ret.find("*").andSelf().each(function(){
if ( this.nodeName !== orig[i].nodeName ) { return; }

var events = jQuery.data( orig[i], "events" );

for ( var type in events ) {
for ( var handler in events[ type ] ) {
jQuery.event.add( this, type, events[ type ][ handler ], events[ type ][ handler ].data );
}
}

i++;
});
} }


// Return the cloned set // Return the cloned set
Expand Down Expand Up @@ -284,6 +271,24 @@ jQuery.fn.extend({
} }
}); });


function cloneCopyEvent(orig, ret) {
var i = 0;

ret.each(function(){
if ( this.nodeName !== orig[i].nodeName ) {
return;
}

var events = jQuery.data( orig[i], "events" );

for ( var type in events ) {
for ( var handler in events[ type ] ) {
jQuery.event.add( this, type, events[ type ][ handler ], events[ type ][ handler ].data );
}
}
});
}

function buildFragment(args, nodes, scripts){ function buildFragment(args, nodes, scripts){
var fragment, cacheable, cached, cacheresults, doc; var fragment, cacheable, cached, cacheresults, doc;


Expand Down

0 comments on commit 62436f4

Please sign in to comment.