Skip to content
Permalink
Browse files

fix for #4189, live/die now work with contexts other than just document

  • Loading branch information...
brandonaaron committed Mar 20, 2009
1 parent dae96f5 commit 30e760b63fd6d82f30833cd2864f245dd9594cd9
Showing with 21 additions and 3 deletions.
  1. +2 −2 src/event.js
  2. +19 −1 test/unit/event.js
@@ -548,13 +548,13 @@ jQuery.fn.extend({
var proxy = jQuery.event.proxy( fn );
proxy.guid += this.selector + type;

jQuery(document).bind( liveConvert(type, this.selector), this.selector, proxy );
jQuery( this.context ).bind( liveConvert(type, this.selector), this.selector, proxy );

return this;
},

die: function( type, fn ){
jQuery(document).unbind( liveConvert(type, this.selector), fn ? { guid: fn.guid + this.selector + type } : null );
jQuery( this.context ).unbind( liveConvert(type, this.selector), fn ? { guid: fn.guid + this.selector + type } : null );
return this;
}
});
@@ -489,7 +489,7 @@ test("toggle(Function, Function, ...)", function() {
});

test(".live()/.die()", function() {
expect(49);
expect(52);

var submit = 0, div = 0, livea = 0, liveb = 0;

@@ -561,6 +561,24 @@ test(".live()/.die()", function() {
jQuery("div").die("click");
jQuery("div").die("submit");

// Test binding with a different context
var clicked = 0, container = jQuery('#main')[0];
jQuery("#foo", container).live("click", function(e){ clicked++; });
jQuery("div").trigger('click');
jQuery("#foo").trigger('click');
jQuery("#main").trigger('click');
jQuery("body").trigger('click');
equals( clicked, 2, "live with a context" );

// Make sure the event is actually stored on the context
ok( jQuery.data(container, "events").live, "live with a context" );

// Test unbinding with a different context
jQuery("#foo", container).die("click");
jQuery("#foo").trigger('click');
equals( clicked, 2, "die with a context");


// Verify that return false prevents default action
jQuery("#anchor2").live("click", function(){ return false; });
var hash = window.location.hash;

0 comments on commit 30e760b

Please sign in to comment.
You can’t perform that action at this time.