X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=test%2Funit%2Fevent.js;h=16cfb6ce9530b6c99f114bfb7575ff44bf9818e4;hb=8356871a5522ad59cac80af2ca4695079059b97e;hp=63c640d1195a61a17c0f7647b20171c8c52c74f3;hpb=4460d5ad5949e5c9bf58d5de72b1d8b308181bf7;p=jquery.git
diff --git a/test/unit/event.js b/test/unit/event.js
index 63c640d..16cfb6c 100644
--- a/test/unit/event.js
+++ b/test/unit/event.js
@@ -162,6 +162,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 +252,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('
Change location').prependTo('#firstUL').find('a').bind('click', function() {
@@ -300,7 +337,7 @@ test("trigger() bubbling", function() {
});
test("trigger(type, [data], [fn])", function() {
- expect(11);
+ expect(12);
var handler = function(event, a, b, c) {
equals( event.type, "click", "check passed data" );
@@ -337,6 +374,14 @@ test("trigger(type, [data], [fn])", function() {
pass = false;
}
ok( pass, "Trigger focus on hidden element" );
+
+ pass = true;
+ try {
+ jQuery('table:first').bind('test:test', function(){}).trigger('test:test');
+ } catch (e) {
+ pass = false;
+ }
+ ok( pass, "Trigger on a table with a colon in the even type, see #3533" );
});
test("trigger(eventObject, [data], [fn])", function() {
@@ -490,7 +535,7 @@ test("toggle(Function, Function, ...)", function() {
});
test(".live()/.die()", function() {
- expect(54);
+ expect(58);
var submit = 0, div = 0, livea = 0, liveb = 0;
@@ -587,6 +632,18 @@ test(".live()/.die()", function() {
jQuery("#foo").live("click", function(e, data){ equals( data, true, "live with trigger data" ); });
jQuery("#foo").trigger("click", true).die("click");
+ // Test binding with different this object
+ jQuery("#foo").live("click", function(e){ equals( this.foo, "bar", "live with event scope" ); }, { foo: "bar" });
+ jQuery("#foo").trigger("click").die("click");
+
+ // Test binding with different this object, event data, and trigger data
+ jQuery("#foo").live("click", true, function(e, data){
+ equals( e.data, true, "live with with different this object, event data, and trigger data" );
+ equals( this.foo, "bar", "live with with different this object, event data, and trigger data" );
+ equals( data, true, "live with with different this object, event data, and trigger data")
+ }, { foo: "bar" });
+ jQuery("#foo").trigger("click", true).die("click");
+
// Verify that return false prevents default action
jQuery("#anchor2").live("click", function(){ return false; });
var hash = window.location.hash;
@@ -688,6 +745,43 @@ test(".live()/.die()", function() {
jQuery('span#liveSpan1').die('click');
});
+test("live with focus/blur", function(){
+ expect(2);
+
+ // Setup
+ jQuery("").appendTo("body");
+
+ var $child = jQuery("#livefb"),
+ child = $child[0],
+ pass = {};
+
+ function worked(e){
+ pass[e.type] = true;
+ }
+
+ $child.live("focus", worked);
+ $child.live("blur", worked);
+
+ // Test
+ child.focus();
+ if (pass.focus)
+ ok(true, "Test live() with focus event");
+ else
+ ok(true, "Cannot test focus because the window isn't focused");
+
+ child.blur();
+ if (pass.blur)
+ ok( true, "Test live() with blur event");
+ else
+ ok(true, "Cannot test blur because the window isn't focused");
+
+ // Teardown
+ $child.die("focus", worked);
+ $child.die("blur", worked);
+ $child.remove();
+ window.scrollTo(0,0);
+});
+
test("Non DOM element events", function() {
expect(3);