X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=test%2Funit%2Fevent.js;h=4120af14ef080f78e31e1fbb6afe28f9d902da05;hb=851846aabea72fe784b8a13cfb04cffecdb771b6;hp=1da9b5906fab6429850851e7068941ef51e1e483;hpb=9aa0c69c43bad9fce5ef7732692308afb2a38ec6;p=jquery.git diff --git a/test/unit/event.js b/test/unit/event.js index 1da9b59..4120af1 100644 --- a/test/unit/event.js +++ b/test/unit/event.js @@ -194,6 +194,11 @@ test("unbind(type)", function() { $elem.bind('error error2',error) .unbind('error error2') .trigger('error').triggerHandler('error2'); + + message = "unbind without a type or handler"; + $elem.bind("error error2.test",error) + .unbind() + .trigger("error").triggerHandler("error2"); }); test("unbind(eventObject)", function() { @@ -417,6 +422,21 @@ test("trigger(eventObject, [data], [fn])", function() { $parent.unbind().remove(); }); +test("jQuery.Event.currentTarget", function(){ + expect(1); + + var counter = 0, + $elem = jQuery('').click(function(e){ + equals( e.currentTarget, this, "Check currentTarget on "+(counter++?"native":"fake") +" event" ); + }); + + // Fake event + $elem.trigger('click'); + + // Cleanup + $elem.unbind(); +}); + test("toggle(Function, Function, ...)", function() { expect(11); @@ -474,7 +494,7 @@ test("toggle(Function, Function, ...)", function() { }); test(".live()/.die()", function() { - expect(46); + expect(52); var submit = 0, div = 0, livea = 0, liveb = 0; @@ -546,6 +566,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; @@ -618,14 +656,14 @@ test(".live()/.die()", function() { // bind one pair in one order jQuery('span#liveSpan1 a').live('click', function(){ lived++; return false; }); - jQuery('span#liveSpan1').live('click', function(){ livee++; }); + jQuery('span#liveSpan1').live('click', function(){ livee++; }); jQuery('span#liveSpan1 a').click(); equals( lived, 1, "Verify that only one first handler occurred." ); equals( livee, 0, "Verify that second handler don't." ); // and one pair in inverse - jQuery('#liveHandlerOrder span#liveSpan2').live('click', function(){ livee++; }); + jQuery('#liveHandlerOrder span#liveSpan2').live('click', function(){ livee++; }); jQuery('#liveHandlerOrder span#liveSpan2 a').live('click', function(){ lived++; return false; }); jQuery('span#liveSpan2 a').click(); @@ -634,6 +672,17 @@ test(".live()/.die()", function() { // Cleanup jQuery("span#liveSpan1 a, span#liveSpan1, span#liveSpan2 a, span#liveSpan2").die("click"); + + // Test this, target and currentTarget are correct + jQuery('span#liveSpan1').live('click', function(e){ + equals( this.id, 'liveSpan1', 'Check the this within a live handler' ); + equals( e.currentTarget.id, 'liveSpan1', 'Check the event.currentTarget within a live handler' ); + equals( e.target.nodeName.toUpperCase(), 'A', 'Check the event.target within a live handler' ); + }); + + jQuery('span#liveSpan1 a').click(); + + jQuery('span#liveSpan1').die('click'); }); /*