]> source.dussan.org Git - jquery.git/commitdiff
Event: Allow constructing a jQuery.Event without a target 3141/head
authorDave Methvin <dave.methvin@gmail.com>
Thu, 2 Jun 2016 22:33:47 +0000 (18:33 -0400)
committerDave Methvin <dave.methvin@gmail.com>
Fri, 3 Jun 2016 00:56:47 +0000 (20:56 -0400)
Fixes gh-3139
Closes gh-3140

src/event.js
test/unit/event.js

index ff0ab849370a0fb919ca2055dd1813894c23c812..d64b9b6cb5e2853ce39d850a092312b531aff69e 100644 (file)
@@ -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;
 
index 99797061f0ccae8d4eac36214ac90dcd47771961..fef3b173ec47c0d2cc412657da50f141042ed646 100644 (file)
@@ -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 );