Skip to content

Commit a45372a

Browse files
committed
Adding in .bind(name, false), .unbind(name, false) support - an easy way to just stop bubbling and the default action on an element. Fixes #6188.
1 parent ba7195e commit a45372a

File tree

3 files changed

+37
-5
lines changed

3 files changed

+37
-5
lines changed

src/ajax.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ var jsc = now(),
1313

1414
jQuery.fn.extend({
1515
load: function( url, params, callback ) {
16-
if ( typeof url !== "string" ) {
17-
return _load.call( this, url );
16+
if ( typeof url !== "string" && _load ) {
17+
return _load.apply( this, arguments );
1818

1919
// Don't do a request if no elements are being requested
2020
} else if ( !this.length ) {

src/event.js

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,10 @@ jQuery.event = {
2525
elem = window;
2626
}
2727

28+
if ( handler === false ) {
29+
handler = returnFalse;
30+
}
31+
2832
var handleObjIn, handleObj;
2933

3034
if ( handler.handler ) {
@@ -138,6 +142,10 @@ jQuery.event = {
138142
return;
139143
}
140144

145+
if ( handler === false ) {
146+
handler = returnFalse;
147+
}
148+
141149
var ret, type, fn, i = 0, all, namespaces, namespace, special, eventType, handleObj, origType,
142150
elemData = jQuery.data( elem ),
143151
events = elemData && elemData.events;
@@ -830,7 +838,7 @@ jQuery.each(["bind", "one"], function( i, name ) {
830838
return this;
831839
}
832840

833-
if ( jQuery.isFunction( data ) ) {
841+
if ( jQuery.isFunction( data ) || data === false ) {
834842
fn = data;
835843
data = undefined;
836844
}
@@ -1072,8 +1080,13 @@ jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblcl
10721080

10731081
// Handle event binding
10741082
jQuery.fn[ name ] = function( data, fn ) {
1075-
return data || fn ?
1076-
this.bind( name, fn ? data : null, fn || data ) :
1083+
if ( fn == undefined ) {
1084+
fn = data;
1085+
data = null;
1086+
}
1087+
1088+
return arguments.length > 0 ?
1089+
this.bind( name, data, fn ) :
10771090
this.trigger( name );
10781091
};
10791092

test/unit/event.js

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -384,6 +384,25 @@ test("bind(), with different this object", function() {
384384
ok( !jQuery.data(jQuery("#firstp")[0], "events"), "Event handler unbound when using different this object and data." );
385385
});
386386

387+
test("bind(name, false), unbind(name, false)", function() {
388+
expect(3);
389+
390+
var main = 0;
391+
jQuery("#main").bind("click", function(e){ main++; });
392+
jQuery("#ap").trigger("click");
393+
equals( main, 1, "Verify that the trigger happened correctly." );
394+
395+
main = 0;
396+
jQuery("#ap").bind("click", false);
397+
jQuery("#ap").trigger("click");
398+
equals( main, 0, "Verify that no bubble happened." );
399+
400+
main = 0;
401+
jQuery("#ap").unbind("click", false);
402+
jQuery("#ap").trigger("click");
403+
equals( main, 1, "Verify that the trigger happened correctly." );
404+
});
405+
387406
test("bind()/trigger()/unbind() on plain object", function() {
388407
expect( 2 );
389408

0 commit comments

Comments
 (0)