From: Ariel Flesler Date: Mon, 29 Dec 2008 21:57:29 +0000 (+0000) Subject: jquery event: jQuery.Event can be instantiated without the 'new' keyword. X-Git-Url: http://git.asbjorn.biz/?p=jquery.git;a=commitdiff_plain;h=4f99e793fa7a745ee49c73193891d6e2a40565c2 jquery event: jQuery.Event can be instantiated without the 'new' keyword. --- diff --git a/src/event.js b/src/event.js index 3302656..74bc1df 100644 --- a/src/event.js +++ b/src/event.js @@ -195,9 +195,9 @@ jQuery.event = { // jQuery.Event object e[expando] ? e : // Object literal - jQuery.extend( new jQuery.Event(type), e ) : + jQuery.extend( jQuery.Event(type), e ) : // Just the event type (string) - new jQuery.Event(type); + jQuery.Event(type); e.target = e.target || elem; e.currentTarget = elem; @@ -306,7 +306,7 @@ jQuery.event = { // store a copy of the original event object // and "clone" to set read-only properties var originalEvent = event; - event = new jQuery.Event( originalEvent ); + event = jQuery.Event( originalEvent ); for ( var i = this.props.length, prop; i; ){ prop = this.props[ --i ]; @@ -386,6 +386,10 @@ jQuery.event = { }; jQuery.Event = function( src ){ + // Allow instantiation without the 'new' keyword + if( !this.preventDefault ) + return new jQuery.Event(src); + // Event object if( src && src.type ){ this.originalEvent = src; diff --git a/test/unit/event.js b/test/unit/event.js index 296c092..fd91819 100644 --- a/test/unit/event.js +++ b/test/unit/event.js @@ -270,7 +270,7 @@ test("unbind(event)", function() { }); test("trigger(event, [data], [fn])", function() { - expect(67); + expect(69); var handler = function(event, a, b, c) { equals( event.type, "click", "check passed data" ); @@ -330,8 +330,13 @@ test("trigger(event, [data], [fn])", function() { // Triggers 8 equals( $elem.triggerHandler("click", [1, "2", "abc"], handler2), false, "Verify handler response" ); + var eventObj = jQuery.Event("noNew"); + + ok( eventObj != window, "Instantiate jQuery.Event without the 'new' keyword" ); + equals( eventObj.type, "noNew", "Verify its type" ); + // Build fake click event to pass in - var eventObj = new jQuery.Event("click"); + eventObj = new jQuery.Event("click"); // Trigger only the handlers (no native), with external event obj // Triggers 5