Adding in .bind(name, false), .unbind(name, false) support - an easy way to just...
[jquery.git] / src / event.js
index db08bc0..a7900c9 100644 (file)
@@ -25,6 +25,10 @@ jQuery.event = {
                        elem = window;
                }
 
+               if ( handler === false ) {
+                       handler = returnFalse;
+               }
+
                var handleObjIn, handleObj;
 
                if ( handler.handler ) {
@@ -138,6 +142,10 @@ jQuery.event = {
                        return;
                }
 
+               if ( handler === false ) {
+                       handler = returnFalse;
+               }
+
                var ret, type, fn, i = 0, all, namespaces, namespace, special, eventType, handleObj, origType,
                        elemData = jQuery.data( elem ),
                        events = elemData && elemData.events;
@@ -525,10 +533,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 ) {
@@ -826,7 +838,7 @@ jQuery.each(["bind", "one"], function( i, name ) {
                        return this;
                }
                
-               if ( jQuery.isFunction( data ) ) {
+               if ( jQuery.isFunction( data ) || data === false ) {
                        fn = data;
                        data = undefined;
                }
@@ -1022,6 +1034,7 @@ function liveHandler( event ) {
 
                                // Those two events require additional checking
                                if ( handleObj.preType === "mouseenter" || handleObj.preType === "mouseleave" ) {
+                                       event.type = handleObj.preType;
                                        related = jQuery( event.relatedTarget ).closest( handleObj.selector )[0];
                                }
 
@@ -1066,8 +1079,15 @@ jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblcl
        "change select submit keydown keypress keyup error").split(" "), function( i, name ) {
 
        // Handle event binding
-       jQuery.fn[ name ] = function( fn ) {
-               return fn ? this.bind( name, fn ) : this.trigger( name );
+       jQuery.fn[ name ] = function( data, fn ) {
+               if ( fn == undefined ) {
+                       fn = data;
+                       data = null;
+               }
+
+               return arguments.length > 0 ?
+                       this.bind( name, data, fn ) :
+                       this.trigger( name );
        };
 
        if ( jQuery.attrFn ) {