live: function( type, fn ){
var proxy = jQuery.event.proxy( fn );
- proxy.guid += this.selector;
+ proxy.guid += this.selector + type;
jQuery(document).bind( liveConvert(type, this.selector), this.selector, proxy );
},
die: function( type, fn ){
- jQuery(document).unbind( liveConvert(type, this.selector), fn ? { guid: fn.guid + this.selector } : null );
+ jQuery(document).unbind( liveConvert(type, this.selector), fn ? { guid: fn.guid + this.selector + type } : null );
return this;
}
});
});
test(".live()/.die()", function() {
- expect(34);
+ expect(36);
var submit = 0, div = 0, livea = 0, liveb = 0;
equals( called, 3, "Verify that only one click occurred." );
jQuery("#anchor2").trigger("click");
- equals( called, 3, "Verify that only one click occurred." );
+ equals( called, 3, "Verify that no click occurred." );
+
+ // Make sure that it still works if the selector is the same,
+ // but the event type is different
+ jQuery("#nothiddendiv").live("foo", callback);
// Cleanup
jQuery("#nothiddendiv").die("click", callback);
+
+ jQuery("#nothiddendiv").trigger("click");
+ equals( called, 3, "Verify that no click occurred." );
+
+ jQuery("#nothiddendiv").trigger("foo");
+ equals( called, 4, "Verify that one foo occurred." );
+
+ // Cleanup
+ jQuery("#nothiddendiv").die("foo", callback);
});
/*