Make sure events exist before trying to access them in jQuery.event.handle and remove...
[jquery.git] / src / event.js
index 1e2d33d..5369b85 100644 (file)
@@ -374,7 +374,8 @@ jQuery.event = {
                        namespace = new RegExp("(^|\\.)" + namespaces.slice(0).sort().join("\\.(?:.*\\.)?") + "(\\.|$)");
                }
 
-               var events = jQuery.data(this, "events"), handlers = events[ event.type ];
+               events = jQuery.data(this, "events");
+               handlers = (events || {})[ event.type ];
 
                if ( events && handlers ) {
                        // Clone the handlers to prevent manipulation
@@ -525,10 +526,14 @@ jQuery.event = {
 
 var removeEvent = document.removeEventListener ?
        function( elem, type, handle ) {
-               elem.removeEventListener( type, handle, false );
+               if ( elem.removeEventListener ) {
+                       elem.removeEventListener( type, handle, false );
+               }
        } : 
        function( elem, type, handle ) {
-               elem.detachEvent( "on" + type, handle );
+               if ( elem.detachEvent ) {
+                       elem.detachEvent( "on" + type, handle );
+               }
        };
 
 jQuery.Event = function( src ) {