Adding in .bind(name, false), .unbind(name, false) support - an easy way to just...
authorjeresig <jeresig@gmail.com>
Sat, 27 Feb 2010 14:02:13 +0000 (09:02 -0500)
committerjeresig <jeresig@gmail.com>
Sat, 27 Feb 2010 14:02:13 +0000 (09:02 -0500)
src/ajax.js
src/event.js
test/unit/event.js

index 7b15a1d..08fa08b 100644 (file)
@@ -13,8 +13,8 @@ var jsc = now(),
 
 jQuery.fn.extend({
        load: function( url, params, callback ) {
-               if ( typeof url !== "string" ) {
-                       return _load.call( this, url );
+               if ( typeof url !== "string" && _load ) {
+                       return _load.apply( this, arguments );
 
                // Don't do a request if no elements are being requested
                } else if ( !this.length ) {
index 779c069..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;
@@ -830,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;
                }
@@ -1072,8 +1080,13 @@ jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblcl
 
        // Handle event binding
        jQuery.fn[ name ] = function( data, fn ) {
-               return data || fn ?
-                       this.bind( name, fn ? data : null, fn || data ) :
+               if ( fn == undefined ) {
+                       fn = data;
+                       data = null;
+               }
+
+               return arguments.length > 0 ?
+                       this.bind( name, data, fn ) :
                        this.trigger( name );
        };
 
index 6404900..a9c8815 100644 (file)
@@ -384,6 +384,25 @@ test("bind(), with different this object", function() {
        ok( !jQuery.data(jQuery("#firstp")[0], "events"), "Event handler unbound when using different this object and data." );
 });
 
+test("bind(name, false), unbind(name, false)", function() {
+       expect(3);
+
+       var main = 0;
+       jQuery("#main").bind("click", function(e){ main++; });
+       jQuery("#ap").trigger("click");
+       equals( main, 1, "Verify that the trigger happened correctly." );
+
+       main = 0;
+       jQuery("#ap").bind("click", false);
+       jQuery("#ap").trigger("click");
+       equals( main, 0, "Verify that no bubble happened." );
+
+       main = 0;
+       jQuery("#ap").unbind("click", false);
+       jQuery("#ap").trigger("click");
+       equals( main, 1, "Verify that the trigger happened correctly." );
+});
+
 test("bind()/trigger()/unbind() on plain object", function() {
        expect( 2 );