From: Dave Methvin Date: Thu, 2 Jun 2016 22:33:47 +0000 (-0400) Subject: Event: Allow constructing a jQuery.Event without a target X-Git-Tag: 3.0.0~6 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=refs%2Fpull%2F3141%2Fhead;p=jquery.git Event: Allow constructing a jQuery.Event without a target Fixes gh-3139 Closes gh-3140 --- diff --git a/src/event.js b/src/event.js index ff0ab8493..d64b9b6cb 100644 --- a/src/event.js +++ b/src/event.js @@ -527,7 +527,7 @@ jQuery.Event = function( src, props ) { // Create target properties // Support: Safari <=6 - 7 only // Target should not be a text node (#504, #13143) - this.target = ( src.target.nodeType === 3 ) ? + this.target = ( src.target && src.target.nodeType === 3 ) ? src.target.parentNode : src.target; diff --git a/test/unit/event.js b/test/unit/event.js index 99797061f..fef3b173e 100644 --- a/test/unit/event.js +++ b/test/unit/event.js @@ -2736,6 +2736,15 @@ QUnit.test( ".off() removes the expando when there's no more data", function( as } } ); +QUnit.test( "jQuery.Event( src ) does not require a target property", function( assert ) { + assert.expect( 2 ); + + var event = jQuery.Event( { type: "offtarget" } ); + + assert.equal( event.type, "offtarget", "correct type" ); + assert.equal( event.target, undefined, "no target" ); +} ); + QUnit.test( "preventDefault() on focusin does not throw exception", function( assert ) { assert.expect( 1 );