X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=test%2Funit%2Fevent.js;h=a647e5f3bff07fa7cd0953e888aa13b5606d3690;hb=1f92edee207829a28de80ee72548cdbd599bcc79;hp=829ef7bcb49b8e2f00c0a1f76c0e039bf788e17b;hpb=88068f82c199847d3679b130664dd91cc2e89f00;p=jquery.git
diff --git a/test/unit/event.js b/test/unit/event.js
index 829ef7b..a647e5f 100644
--- a/test/unit/event.js
+++ b/test/unit/event.js
@@ -1,5 +1,25 @@
module("event");
+test("null or undefined handler", function() {
+ expect(2);
+ // Supports Fixes bug #7229
+ try {
+
+ jQuery("#firstp").click(null);
+
+ ok(true, "Passing a null handler will not throw an exception");
+
+ } catch (e) {}
+
+ try {
+
+ jQuery("#firstp").click(undefined);
+
+ ok(true, "Passing an undefined handler will not throw an exception");
+
+ } catch (e) {}
+});
+
test("bind(), with data", function() {
expect(3);
var handler = function(event) {
@@ -245,6 +265,36 @@ test("live/die(Object), delegate/undelegate(String, Object)", function() {
equals( mouseoverCounter, 4, "die" );
});
+test("live/delegate immediate propagation", function() {
+ expect(2);
+
+ var $p = jQuery("#firstp"), $a = $p.find("a:first"), lastClick;
+
+ lastClick = "";
+ $a.live( "click", function(e) {
+ lastClick = "click1";
+ e.stopImmediatePropagation();
+ });
+ $a.live( "click", function(e) {
+ lastClick = "click2";
+ });
+ $a.trigger( "click" );
+ equals( lastClick, "click1", "live stopImmediatePropagation" );
+ $a.die( "click" );
+
+ lastClick = "";
+ $p.delegate( "a", "click", function(e) {
+ lastClick = "click1";
+ e.stopImmediatePropagation();
+ });
+ $p.delegate( "a", "click", function(e) {
+ lastClick = "click2";
+ });
+ $a.trigger( "click" );
+ equals( lastClick, "click1", "delegate stopImmediatePropagation" );
+ $p.undelegate( "click" );
+});
+
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();
@@ -443,7 +493,7 @@ test("bind(name, false), unbind(name, false)", function() {
});
test("bind()/trigger()/unbind() on plain object", function() {
- expect( 7 );
+ expect( 8 );
var obj = {};
@@ -453,8 +503,13 @@ test("bind()/trigger()/unbind() on plain object", function() {
// Make sure it doesn't complain when no events are found
jQuery(obj).unbind("test");
- jQuery(obj).bind("test", function(){
- ok( true, "Custom event run." );
+ jQuery(obj).bind({
+ test: function() {
+ ok( true, "Custom event run." );
+ },
+ submit: function() {
+ ok( true, "Custom submit event run." );
+ }
});
var events = jQuery(obj).data("__events__");
@@ -466,8 +521,10 @@ test("bind()/trigger()/unbind() on plain object", function() {
// Should trigger 1
jQuery(obj).trigger("test");
+ jQuery(obj).trigger("submit");
jQuery(obj).unbind("test");
+ jQuery(obj).unbind("submit");
// Should trigger 0
jQuery(obj).trigger("test");
@@ -1238,6 +1295,8 @@ test("live with namespaces", function(){
});
test("live with change", function(){
+ expect(8);
+
var selectChange = 0, checkboxChange = 0;
var select = jQuery("select[name='S1']")
@@ -1269,28 +1328,13 @@ test("live with change", function(){
checkbox.trigger("change");
equals( checkboxChange, 1, "Change on checkbox." );
- // test before activate on radio
-
- // test blur/focus on textarea
- var textarea = jQuery("#area1"), textareaChange = 0, oldVal = textarea.val();
- textarea.live("change", function() {
- textareaChange++;
- });
-
- textarea.val(oldVal + "foo");
- textarea.trigger("change");
- equals( textareaChange, 1, "Change on textarea." );
-
- textarea.val(oldVal);
- textarea.die("change");
-
// test blur/focus on text
var text = jQuery("#name"), textChange = 0, oldTextVal = text.val();
text.live("change", function() {
textChange++;
});
- text.val(oldVal+"foo");
+ text.val(oldTextVal+"foo");
text.trigger("change");
equals( textChange, 1, "Change on text input." );
@@ -1707,6 +1751,8 @@ test("delegate with multiple events", function(){
});
test("delegate with change", function(){
+ expect(8);
+
var selectChange = 0, checkboxChange = 0;
var select = jQuery("select[name='S1']");
@@ -1738,28 +1784,13 @@ test("delegate with change", function(){
checkbox.trigger("change");
equals( checkboxChange, 1, "Change on checkbox." );
- // test before activate on radio
-
- // test blur/focus on textarea
- var textarea = jQuery("#area1"), textareaChange = 0, oldVal = textarea.val();
- jQuery("#body").delegate("#area1", "change", function() {
- textareaChange++;
- });
-
- textarea.val(oldVal + "foo");
- textarea.trigger("change");
- equals( textareaChange, 1, "Change on textarea." );
-
- textarea.val(oldVal);
- jQuery("#body").undelegate("#area1", "change");
-
// test blur/focus on text
var text = jQuery("#name"), textChange = 0, oldTextVal = text.val();
jQuery("#body").delegate("#name", "change", function() {
textChange++;
});
- text.val(oldVal+"foo");
+ text.val(oldTextVal+"foo");
text.trigger("change");
equals( textChange, 1, "Change on text input." );
@@ -1843,21 +1874,27 @@ test("window resize", function() {
ok( !jQuery(window).data("__events__"), "Make sure all the events are gone." );
});
-test("focusin bubbles", function(){
+
+test("focusin bubbles", function() {
//create an input and focusin on it
- var input = jQuery(""),
- order = 0;
- input.appendTo(document.body);
- jQuery(document.body).bind("focusin.focusinBubblesTest",function(){
+ var input = jQuery(""), order = 0;
+
+ input.prependTo("body");
+
+ jQuery("body").bind("focusin.focusinBubblesTest",function(){
equals(1,order++,"focusin on the body second")
- })
+ });
+
input.bind("focusin.focusinBubblesTest",function(){
equals(0,order++,"focusin on the element first")
- })
+ });
+
input[0].focus();
input.remove();
- jQuery(document.body).unbind("focusin.focusinBubblesTest");
-})
+
+ jQuery("body").unbind("focusin.focusinBubblesTest");
+});
+
/*
test("jQuery(function($) {})", function() {
stop();