Commit 4f744191 authored by John Resig's avatar John Resig

Made sure that return false works in .live() along with the event object being...

Made sure that return false works in .live() along with the event object being passed in as the first argument.
parent a1ca9427
...@@ -551,14 +551,18 @@ jQuery.fn.extend({ ...@@ -551,14 +551,18 @@ jQuery.fn.extend({
}); });
function liveHandler( event ){ 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){ jQuery.each(jQuery.data(this, "events").live || [], function(i, fn){
if ( check.test(fn.type) ) { if ( check.test(fn.type) ) {
var elem = jQuery(event.target).closest(fn.data)[0]; var elem = jQuery(event.target).closest(fn.data)[0];
if ( elem ) if ( elem ) {
jQuery.event.trigger( event.type, fn.data, elem, false, fn, false ); 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){ function liveConvert(type, selector){
......
...@@ -439,7 +439,7 @@ test("toggle(Function, Function, ...)", function() { ...@@ -439,7 +439,7 @@ test("toggle(Function, Function, ...)", function() {
}); });
test(".live()/.die()", function() { test(".live()/.die()", function() {
expect(28); expect(30);
var submit = 0, div = 0, livea = 0, liveb = 0; var submit = 0, div = 0, livea = 0, liveb = 0;
...@@ -501,6 +501,20 @@ test(".live()/.die()", function() { ...@@ -501,6 +501,20 @@ test(".live()/.die()", function() {
jQuery("div#nothiddendiv").die("click"); jQuery("div#nothiddendiv").die("click");
jQuery("div").die("click"); jQuery("div").die("click");
jQuery("div").die("submit"); 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");
}); });
/* /*
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment