]> source.dussan.org Git - jquery.git/commitdiff
#7883 .delegate and .live should accept false as the fn arg, like bind 159/head
authorrwldrn <waldron.rick@gmail.com>
Sat, 1 Jan 2011 18:49:59 +0000 (13:49 -0500)
committerrwldrn <waldron.rick@gmail.com>
Sat, 1 Jan 2011 18:49:59 +0000 (13:49 -0500)
src/event.js
test/unit/event.js

index 675e5fff3ade6cd8af77aca3468e0fd506bc80df..4d908b92dd73fc5bfbcd32376b2ef7fa682e602d 100644 (file)
@@ -1023,10 +1023,15 @@ jQuery.each(["live", "die"], function( i, name ) {
                        return this;
                }
 
-               if ( jQuery.isFunction( data ) ) {
+               if ( jQuery.isFunction( data ) || data === false ) {
                        fn = data;
                        data = undefined;
                }
+               
+               if ( fn === false ) {
+                       fn = returnFalse;
+               }
+                               
 
                types = (types || "").split(" ");
 
index b4672a8b8dde0f5463f71fd2f8ed12b3c28645a9..01fbac57448290e339b40312294981ebf4042e16 100644 (file)
@@ -527,6 +527,45 @@ test("bind(name, false), unbind(name, false)", function() {
        equals( main, 1, "Verify that the trigger happened correctly." );
 });
 
+test("live(name, false), die(name, false)", function() {
+       expect(3);
+
+       var main = 0;
+       jQuery("#main").live("click", function(e){ main++; });
+       jQuery("#ap").trigger("click");
+       equals( main, 1, "Verify that the trigger happened correctly." );
+
+       main = 0;
+       jQuery("#ap").live("click", false);
+       jQuery("#ap").trigger("click");
+       equals( main, 0, "Verify that no bubble happened." );
+
+       main = 0;
+       jQuery("#ap").die("click", false);
+       jQuery("#ap").trigger("click");
+       equals( main, 1, "Verify that the trigger happened correctly." );
+});
+
+test("delegate(selector, name, false), undelegate(selector, name, false)", function() {
+       expect(3);
+
+       var main = 0;
+
+       jQuery("#main").delegate("#ap", "click", function(e){ main++; });
+       jQuery("#ap").trigger("click");
+       equals( main, 1, "Verify that the trigger happened correctly." );
+
+       main = 0;
+       jQuery("#ap").delegate("#groups", "click", false);
+       jQuery("#groups").trigger("click");
+       equals( main, 0, "Verify that no bubble happened." );
+
+       main = 0;
+       jQuery("#ap").undelegate("#groups", "click", false);
+       jQuery("#groups").trigger("click");
+       equals( main, 1, "Verify that the trigger happened correctly." );
+});
+
 test("bind()/trigger()/unbind() on plain object", function() {
        expect( 8 );