From 4f7441910f664800cca8d252f04ec479518edfe0 Mon Sep 17 00:00:00 2001
From: John Resig <jeresig@gmail.com>
Date: Tue, 30 Dec 2008 20:45:33 +0000
Subject: [PATCH] Made sure that return false works in .live() along with the
 event object being passed in as the first argument.

---
 src/event.js       |   10 +++++++---
 test/unit/event.js |   16 +++++++++++++++-
 2 files changed, 22 insertions(+), 4 deletions(-)

diff --git a/src/event.js b/src/event.js
index 74bc1df..0710b7b 100644
--- a/src/event.js
+++ b/src/event.js
@@ -551,14 +551,18 @@ jQuery.fn.extend({
 });
 
 function liveHandler( event ){
-	var check = RegExp("(^|\\.)" + event.type + "(\\.|$)");
+	var check = RegExp("(^|\\.)" + event.type + "(\\.|$)"), stop = true;
 	jQuery.each(jQuery.data(this, "events").live || [], function(i, fn){
 		if ( check.test(fn.type) ) {
 			var elem = jQuery(event.target).closest(fn.data)[0];
-			if ( elem )
-				jQuery.event.trigger( event.type, fn.data, elem, false, fn, false );
+			if ( elem ) {
+				var ret = jQuery.event.trigger( event.type, [event, fn.data], elem, false, fn, false );
+				if ( ret === false )
+					stop = false;
+			}
 		}
 	});
+	return stop;
 }
 
 function liveConvert(type, selector){
diff --git a/test/unit/event.js b/test/unit/event.js
index fd91819..e80774f 100644
--- a/test/unit/event.js
+++ b/test/unit/event.js
@@ -439,7 +439,7 @@ test("toggle(Function, Function, ...)", function() {
 });
 
 test(".live()/.die()", function() {
-	expect(28);
+	expect(30);
 
 	var submit = 0, div = 0, livea = 0, liveb = 0;
 
@@ -501,6 +501,20 @@ test(".live()/.die()", function() {
 	jQuery("div#nothiddendiv").die("click");
 	jQuery("div").die("click");
 	jQuery("div").die("submit");
+
+	// Verify that return false prevents default action
+	jQuery("#anchor2").live("click", function(){ return false; });
+	var hash = window.location.hash;
+	jQuery("#anchor2").trigger("click");
+	equals( window.location.hash, hash, "return false worked" );
+	jQuery("#anchor2").die("click");
+
+	// Verify that .preventDefault() prevents default action
+	jQuery("#anchor2").live("click", function(e){ e.preventDefault(); });
+	var hash = window.location.hash;
+	jQuery("#anchor2").trigger("click");
+	equals( window.location.hash, hash, "e.preventDefault() worked" );
+	jQuery("#anchor2").die("click");
 });
 
 /*
-- 
1.7.10.4