Bug Tracker

Ticket #2069: 2069.diff

File 2069.diff, 2.1 KB (added by davidserduke, 15 years 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                        }