Make sure that the teardown is called after all the handlers of a type are removed...
[jquery.git] / src / event.js
index 6fe8a5b..e15a2ea 100644 (file)
@@ -221,7 +221,7 @@ jQuery.event = {
                        }
 
                        // remove generic event handler if no more handlers exist
-                       if ( jQuery.isEmptyObject( events[ type ] ) ) {
+                       if ( eventType.length === 0 || pos != null && eventType.length === 1 ) {
                                if ( !special.teardown || special.teardown.call( elem, namespaces ) === false ) {
                                        removeEvent( elem, type, elemData.handle );
                                }
@@ -677,8 +677,7 @@ if ( !jQuery.support.submitBubbles ) {
                },
 
                teardown: function( namespaces ) {
-                       jQuery.event.remove( this, "click.specialSubmit" );
-                       jQuery.event.remove( this, "keypress.specialSubmit" );
+                       jQuery.event.remove( this, ".specialSubmit" );
                }
        };
 
@@ -778,9 +777,7 @@ if ( !jQuery.support.changeBubbles ) {
                },
 
                teardown: function( namespaces ) {
-                       for ( var type in changeFilters ) {
-                               jQuery.event.remove( this, type + ".specialChange", changeFilters[type] );
-                       }
+                       jQuery.event.remove( this, ".specialChange" );
 
                        return formElems.test( this.nodeName );
                }