live event handlers now receive data from trigger, fixes #4532, thanks nbubna
authorBrandon Aaron <brandon.aaron@gmail.com>
Thu, 30 Apr 2009 21:50:15 +0000 (21:50 +0000)
committerBrandon Aaron <brandon.aaron@gmail.com>
Thu, 30 Apr 2009 21:50:15 +0000 (21:50 +0000)
src/event.js
test/unit/event.js

index 6987300..232fa27 100644 (file)
@@ -601,7 +601,7 @@ jQuery.fn.extend({
 });
 
 function liveHandler( event ) {
-       var stop = true, elems = [];
+       var stop = true, elems = [], args = arguments;
 
        jQuery.each( jQuery.data( this, "events" ).live || [], function( i, fn ) {
                if ( fn.live === event.type ) {
@@ -619,7 +619,7 @@ function liveHandler( event ) {
        jQuery.each(elems, function() {
                event.currentTarget = this.elem;
                event.data = this.fn.data
-               if ( this.fn.call( this.elem, event, this.fn.selector ) === false ) {
+               if ( this.fn.apply( this.elem, args ) === false ) {
                        return (stop = false);
                }
        });
index b2270ad..dea17a1 100644 (file)
@@ -490,7 +490,7 @@ test("toggle(Function, Function, ...)", function() {
 });
 
 test(".live()/.die()", function() {
-       expect(53);
+       expect(54);
 
        var submit = 0, div = 0, livea = 0, liveb = 0;
 
@@ -583,6 +583,10 @@ test(".live()/.die()", function() {
        jQuery("#foo").live("click", true, function(e){ equals( e.data, true, "live with event data" ); });
        jQuery("#foo").trigger("click").die("click");
 
+       // Test binding with trigger data
+       jQuery("#foo").live("click", function(e, data){ equals( data, true, "live with trigger data" ); });
+       jQuery("#foo").trigger("click", true).die("click");
+
        // Verify that return false prevents default action
        jQuery("#anchor2").live("click", function(){ return false; });
        var hash = window.location.hash;