X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=test%2Funit%2Fevent.js;h=b2270ad9266c3724f2790334e3f67c58ebd4a9bb;hb=71efbdd3b26f3a283f8d4bfdcc7b6343142027b9;hp=1da9b5906fab6429850851e7068941ef51e1e483;hpb=9aa0c69c43bad9fce5ef7732692308afb2a38ec6;p=jquery.git diff --git a/test/unit/event.js b/test/unit/event.js index 1da9b59..b2270ad 100644 --- a/test/unit/event.js +++ b/test/unit/event.js @@ -47,15 +47,11 @@ test("bind(), no data", function() { test("bind(), iframes", function() { // events don't work with iframes, see #939 - this test fails in IE because of contentDocument - // var doc = document.getElementById("iframe").contentDocument; - // - // doc.body.innerHTML = ""; - // - // var input = doc.getElementsByTagName("input")[0]; - // - // jQuery(input).bind("click",function() { - // ok( true, "Binding to element inside iframe" ); - // }).click(); + var doc = jQuery("#loadediframe").contents(); + + jQuery("div", doc).bind("click", function() { + ok( true, "Binding to element inside iframe" ); + }).click().unbind('click'); }); test("bind(), trigger change on select", function() { @@ -194,6 +190,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 +418,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 +490,7 @@ test("toggle(Function, Function, ...)", function() { }); test(".live()/.die()", function() { - expect(46); + expect(53); var submit = 0, div = 0, livea = 0, liveb = 0; @@ -546,6 +562,27 @@ 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"); + + // Test binding with event data + jQuery("#foo").live("click", true, function(e){ equals( e.data, true, "live with event data" ); }); + jQuery("#foo").trigger("click").die("click"); + // Verify that return false prevents default action jQuery("#anchor2").live("click", function(){ return false; }); var hash = window.location.hash; @@ -618,14 +655,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 +671,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'); }); /*