jQuery: The Write Less, Do More JavaScript Library

Ticket #2069: 2069.diff

File 2069.diff, 2.1 kB (added by davidserduke, 8 months ago)

possible patch

  • test/unit/event.js

     
    11module("event"); 
    22 
     3test("jQuery(function($) {})", function() { 
     4    expect(1); 
     5 
     6    stop(); 
     7    // ready doesn't provide an event object, instead it provides a reference to the jQuery function, see http://docs.jquery.com/Events/ready#fn 
     8    jQuery(function($) { 
     9        ok(jQuery == $, "Check the ready function parameter is the jQuery object"); 
     10        start(); 
     11    }); 
     12}); 
     13 
    314test("bind()", function() { 
    415    expect(18); 
    516 
  • src/event.js

     
    6262                type = parts[0]; 
    6363                handler.type = parts[1]; 
    6464 
     65                if ( type == "ready" && jQuery.isReady ) { 
     66                    handler.call(elem, jQuery); 
     67                    return; 
     68                } 
    6569                // Get the current list of functions bound to this event 
    6670                var handlers = events[type]; 
    6771 
     
    242246 
    243247            // Filter the functions by class 
    244248            if ( !parts[1] || handler.type == parts[1] ) { 
    245                 var ret = handler.apply( this, args ); 
     249                // Special case the "ready" type to remove the event and pass only the jQuery object 
     250                var ret = ( event.type == "ready" ) ?  
     251                    handler.apply( this, Array.prototype.slice.call(args, 1) ) :  
     252                    handler.apply( this, args ); 
    246253 
    247254                if ( val !== false ) 
    248255                    val = ret; 
     
    351358                jQuery.event.add( window, "load", handler ); 
    352359            }, 
    353360             
    354             teardown: function() {return;}, 
     361            teardown: function() { 
     362                var handler = jQuery.event.special.ready.handler; 
     363                if ( document.removeEventListener ) 
     364                    document.removeEventListener( "DOMContentLoaded", handler, false ); 
     365                jQuery.event.remove( window, "load", handler ); 
     366            }, 
    355367             
    356368            handler: function() { 
    357369                // Make sure that the DOM is not already loaded 
    358370                if ( !jQuery.isReady ) { 
    359371                    // Remember that the DOM is ready 
    360372                    jQuery.isReady = true; 
    361                     jQuery(document).triggerHandler("ready"); 
     373                    jQuery(document).triggerHandler("ready", [ jQuery ]); 
    362374                    jQuery(document).unbind("ready"); 
    363375                } 
    364376            }