X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=test%2Funit%2Fevent.js;h=197406b66bd35646ccb43e807b660fb0460fe119;hb=9ebb2fc654d51244618e208705e2258fe733058f;hp=63c640d1195a61a17c0f7647b20171c8c52c74f3;hpb=4460d5ad5949e5c9bf58d5de72b1d8b308181bf7;p=jquery.git diff --git a/test/unit/event.js b/test/unit/event.js index 63c640d..197406b 100644 --- a/test/unit/event.js +++ b/test/unit/event.js @@ -45,6 +45,59 @@ test("bind(), no data", function() { jQuery("#firstp").bind("click", handler).trigger("click"); }); +test("bind/one/unbind(Object)", function(){ + expect(6); + + var clickCounter = 0, mouseoverCounter = 0; + function handler(event) { + if (event.type == "click") + clickCounter++; + else if (event.type == "mouseover") + mouseoverCounter++; + }; + + function handlerWithData(event) { + if (event.type == "click") + clickCounter += event.data; + else if (event.type == "mouseover") + mouseoverCounter += event.data; + }; + + function trigger(){ + $elem.trigger("click").trigger("mouseover"); + } + + var $elem = jQuery("#firstp") + // Regular bind + .bind({ + click:handler, + mouseover:handler + }) + // Bind with data + .one({ + click:handlerWithData, + mouseover:handlerWithData + }, 2 ); + + trigger(); + + equals( clickCounter, 3, "bind(Object)" ); + equals( mouseoverCounter, 3, "bind(Object)" ); + + trigger(); + equals( clickCounter, 4, "bind(Object)" ); + equals( mouseoverCounter, 4, "bind(Object)" ); + + jQuery("#firstp").unbind({ + click:handler, + mouseover:handler + }); + + trigger(); + equals( clickCounter, 4, "bind(Object)" ); + equals( mouseoverCounter, 4, "bind(Object)" ); +}); + test("bind(), iframes", function() { // events don't work with iframes, see #939 - this test fails in IE because of contentDocument var doc = jQuery("#loadediframe").contents(); @@ -162,6 +215,25 @@ test("bind(), multi-namespaced events", function() { jQuery("#firstp").trigger("custom"); }); +test("bind(), with different this object", function() { + expect(4); + var thisObject = { myThis: true }, + data = { myData: true }, + handler1 = function( event ) { + equals( this, thisObject, "bind() with different this object" ); + }, + handler2 = function( event ) { + equals( this, thisObject, "bind() with different this object and data" ); + equals( event.data, data, "bind() with different this object and data" ); + }; + + jQuery("#firstp") + .bind("click", handler1, thisObject).click().unbind("click", handler1) + .bind("click", data, handler2, thisObject).click().unbind("click", handler2); + + ok( !jQuery.data(jQuery("#firstp")[0], "events"), "Event handler unbound when using different this object and data." ); +}); + test("unbind(type)", function() { expect( 0 ); @@ -233,6 +305,24 @@ test("unbind(eventObject)", function() { assert( 0 ); }); +test("hover()", function() { + var times = 0, + handler1 = function( event ) { ++times; }, + handler2 = function( event ) { ++times; }; + + jQuery("#firstp") + .hover(handler1, handler2) + .mouseenter().mouseleave() + .unbind("mouseenter", handler1) + .unbind("mouseleave", handler2) + .hover(handler1) + .mouseenter().mouseleave() + .unbind("mouseenter mouseleave", handler1) + .mouseenter().mouseleave(); + + equals( times, 4, "hover handlers fired" ); +}); + test("trigger() shortcuts", function() { expect(6); jQuery('