diff options
-rw-r--r-- | event/event.js | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/event/event.js b/event/event.js index 0c7b0b1b3..70cfb8693 100644 --- a/event/event.js +++ b/event/event.js @@ -120,17 +120,18 @@ new function(){ // Finally, handle events that only fire once jQuery.fn["one"+o] = function(f){ // Attach the event listener - return this.bind(o, function(e){ - // TODO: Remove the event listener, instead of this hack - - // If this function has already been executed, stop - if ( this[o+f] !== null ) return; - - // Otherwise, mark as having been executed - this[o+f]++; + return this.each(function(){ + + var count = 0; + + // Add the event + jQuery.event.add( this, o, function(e){ + // If this function has already been executed, stop + if ( count++ ) return; - // And execute the bound function - return f.apply(this, [e]); + // And execute the bound function + return f.apply(this, [e]); + }); }); }; |