diff options
author | Daniel Herman <daniel.c.herman@gmail.com> | 2014-05-15 12:26:20 -0400 |
---|---|---|
committer | Richard Gibson <richard.gibson@gmail.com> | 2014-09-04 03:29:16 -0400 |
commit | d4a998f62fde4b9347b99571a7d000b53731909a (patch) | |
tree | c8f2bebfff5c51aef93309bed6f4df77cb042281 | |
parent | 787ffbf5fa9a1afb5883edc576e954337b069bb6 (diff) | |
download | jquery-d4a998f62fde4b9347b99571a7d000b53731909a.tar.gz jquery-d4a998f62fde4b9347b99571a7d000b53731909a.zip |
Event: Restore the `constructor` property on jQuery.Event prototype
The original definition of the jQuery.Event prototype was paving over the
`constructor` property which was causing jQuery.isPlainObject to
improperly report that an instance of jQuery.Event was a plain object.
Fixes #15090
Closes gh-1580
(cherry picked from commit b807aedb7fee321fb3aa5d156a5a256ab0634e2d)
-rw-r--r-- | src/event.js | 1 | ||||
-rw-r--r-- | test/unit/event.js | 4 |
2 files changed, 4 insertions, 1 deletions
diff --git a/src/event.js b/src/event.js index 8c4543cb5..54451306d 100644 --- a/src/event.js +++ b/src/event.js @@ -728,6 +728,7 @@ jQuery.Event = function( src, props ) { // jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding // http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html jQuery.Event.prototype = { + constructor: jQuery.Event, isDefaultPrevented: returnFalse, isPropagationStopped: returnFalse, isImmediatePropagationStopped: returnFalse, diff --git a/test/unit/event.js b/test/unit/event.js index 8bb168a40..fb3b75abc 100644 --- a/test/unit/event.js +++ b/test/unit/event.js @@ -1511,7 +1511,7 @@ if ( window.onbeforeunload === null && test("jQuery.Event( type, props )", function() { - expect(5); + expect(6); var event = jQuery.Event( "keydown", { keyCode: 64 }), handler = function( event ) { @@ -1527,6 +1527,8 @@ test("jQuery.Event( type, props )", function() { ok( "keyCode" in event, "Special 'keyCode' property exists" ); + strictEqual( jQuery.isPlainObject( event ), false, "Instances of $.Event should not be identified as a plain object." ); + jQuery("body").on( "keydown", handler ).trigger( event ); jQuery("body").off( "keydown" ); |