From b6581df5de2083e322dcbede4dce74bacf93af5f Mon Sep 17 00:00:00 2001 From: Dave Methvin Date: Sat, 12 May 2012 13:38:33 -0400 Subject: [PATCH] Fix #11621, $(document).trigger() must bubble to window. --- src/event.js | 7 +++---- test/unit/event.js | 5 ++++- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/event.js b/src/event.js index 46036c5cf..6351d0b53 100644 --- a/src/event.js +++ b/src/event.js @@ -315,14 +315,13 @@ jQuery.event = { bubbleType = special.delegateType || type; cur = rfocusMorph.test( bubbleType + type ) ? elem : elem.parentNode; - old = null; - for ( ; cur; cur = cur.parentNode ) { + for ( old = elem; cur; cur = cur.parentNode ) { eventPath.push([ cur, bubbleType ]); old = cur; } // Only add window if we got to document (e.g., not plain obj or detached DOM) - if ( old && old === elem.ownerDocument ) { + if ( old === (elem.ownerDocument || document) ) { eventPath.push([ old.defaultView || old.parentWindow || window, bubbleType ]); } } @@ -782,7 +781,7 @@ if ( !jQuery.support.submitBubbles ) { }); // return undefined since we don't need an event listener }, - + postDispatch: function( event ) { // If form was submitted by the user, bubble the event up the tree if ( event._submit_bubble ) { diff --git a/test/unit/event.js b/test/unit/event.js index 57adb0443..d5582190a 100644 --- a/test/unit/event.js +++ b/test/unit/event.js @@ -928,7 +928,7 @@ test("trigger() shortcuts", function() { }); test("trigger() bubbling", function() { - expect(17); + expect(18); var win = 0, doc = 0, html = 0, body = 0, main = 0, ap = 0; @@ -964,6 +964,9 @@ test("trigger() bubbling", function() { equal( main, 1, "ap bubble" ); equal( ap, 1, "ap bubble" ); + jQuery( document ).trigger("click"); + equal( win, 4, "doc bubble" ); + // manually clean up events from elements outside the fixture jQuery(document).unbind("click"); jQuery("html, body, #qunit-fixture").unbind("click"); -- 2.39.5