From 7d36ccfa8eb018fcf349e1f74e3a0a614385558f Mon Sep 17 00:00:00 2001
From: John Resig <jeresig@gmail.com>
Date: Sun, 6 Dec 2009 18:20:08 -0800
Subject: [PATCH] Broke out the logic for the bubbling change/submit events so
 that they aren't bound if they aren't used.

---
 src/event.js |   23 +++++++++++------------
 1 file changed, 11 insertions(+), 12 deletions(-)

diff --git a/src/event.js b/src/event.js
index c2d7476..128f78f 100644
--- a/src/event.js
+++ b/src/event.js
@@ -569,9 +569,11 @@ jQuery.each({
 });
 
 // submit delegation
+if ( !jQuery.support.submitBubbles ) {
+
 jQuery.event.special.submit = {
 	setup: function( data, namespaces, fn ) {
-		if ( !jQuery.support.submitBubbles && this.nodeName.toLowerCase() !== "form" ) {
+		if ( this.nodeName.toLowerCase() !== "form" ) {
 			jQuery.event.add(this, "click.specialSubmit." + fn.guid, function( e ) {
 				var elem = e.target, type = elem.type;
 
@@ -588,8 +590,6 @@ jQuery.event.special.submit = {
 				}
 			});
 		}
-
-		return false;
 	},
 
 	remove: function( namespaces, fn ) {
@@ -598,7 +598,11 @@ jQuery.event.special.submit = {
 	}
 };
 
+}
+
 // change delegation, happens here so we have bind.
+if ( !jQuery.support.changeBubbles ) {
+
 jQuery.event.special.change = {
 	filters: {
 		click: function( e ) { 
@@ -647,21 +651,16 @@ jQuery.event.special.change = {
 		}
 	},
 	setup: function( data, namespaces, fn ) {
-		// return false if we bubble
-		if ( !jQuery.support.changeBubbles ) {
-			for ( var type in changeFilters ) {
-				jQuery.event.add( this, type + ".specialChange." + fn.guid, changeFilters[type] );
-			}
+		for ( var type in changeFilters ) {
+			jQuery.event.add( this, type + ".specialChange." + fn.guid, changeFilters[type] );
 		}
 		
 		// always want to listen for change for trigger
 		return false;
 	},
 	remove: function( namespaces, fn ) {
-		if ( !jQuery.support.changeBubbles ) {
-			for ( var type in changeFilters ) {
-				jQuery.event.remove( this, type + ".specialChange" + (fn ? "."+fn.guid : ""), changeFilters[type] );
-			}
+		for ( var type in changeFilters ) {
+			jQuery.event.remove( this, type + ".specialChange" + (fn ? "."+fn.guid : ""), changeFilters[type] );
 		}
 	}
 };
-- 
1.7.10.4