]> source.dussan.org Git - jquery.git/commitdiff
Ref #13353, gh-1183: Capture onlyHandlers in jQuery.Event.isTrigger.
authorRichard Gibson <richard.gibson@gmail.com>
Sat, 2 Feb 2013 02:20:15 +0000 (21:20 -0500)
committerDave Methvin <dave.methvin@gmail.com>
Thu, 28 Feb 2013 21:59:12 +0000 (16:59 -0500)
src/event.js
test/unit/event.js

index e65be9a541024fc6139ec6432087f728b036ec75..c9de8e6176563559f648b65dc0a31235dae06496 100644 (file)
@@ -235,7 +235,8 @@ jQuery.event = {
                        event :
                        new jQuery.Event( type, typeof event === "object" && event );
 
-               event.isTrigger = true;
+               // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)
+               event.isTrigger = onlyHandlers ? 2 : 3;
                event.namespace = namespaces.join(".");
                event.namespace_re = event.namespace ?
                        new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ) :
index 670fa9111b32d70e23837a88e9a53ef204962fe5..67d87ded0c12b164fa13418f8fd701876cb168ab 100644 (file)
@@ -1432,21 +1432,42 @@ test("jQuery.Event( type, props )", function() {
 
 });
 
-test("jQuery.Event.currentTarget", function(){
-       expect(2);
+test("jQuery.Event properties", function(){
+       expect(12);
 
-       jQuery("<div><p><button>shiny</button></p></div>")
-               .on( "click", "p", function( e ){
-                               equal( e.currentTarget, this, "Check delegated currentTarget on event" );
-               })
-               .find( "button" )
-                       .on( "click", function( e ){
-                               equal( e.currentTarget, this, "Check currentTarget on event" );
-                       })
-                       .trigger("click")
-                       .off( "click" )
-               .end()
-               .off( "click" );
+       var handler,
+               $structure = jQuery("<div id='ancestor'><p id='delegate'><span id='target'>shiny</span></p></div>"),
+               $target = $structure.find("#target");
+
+       handler = function( e ) {
+               strictEqual( e.currentTarget, this, "currentTarget at " + this.id );
+               equal( e.isTrigger, 3, "trigger at " + this.id );
+       };
+       $structure.one( "click", handler );
+       $structure.one( "click", "p", handler );
+       $target.one( "click", handler );
+       $target[0].onclick = function( e ) {
+               strictEqual( e.currentTarget, this, "currentTarget at target (native handler)" );
+               equal( e.isTrigger, 3, "trigger at target (native handler)" );
+       };
+       $target.trigger("click");
+
+       $target.one( "click", function( e ) {
+               equal( e.isTrigger, 2, "triggerHandler at target" );
+       });
+       $target[0].onclick = function( e ) {
+               equal( e.isTrigger, 2, "triggerHandler at target (native handler)" );
+       };
+       $target.triggerHandler("click");
+
+       handler = function( e ) {
+               strictEqual( e.isTrigger, undefined, "native event at " + this.id );
+       };
+       $target.one( "click", handler );
+       $target[0].onclick = function( e ) {
+               strictEqual( e.isTrigger, undefined, "native event at target (native handler)" );
+       };
+       fireNative( $target[0], "click" );
 });
 
 test(".delegate()/.undelegate()", function() {