Use DOM 2 event handlers, do not trigger click on a tags and event.data no longer...
[jquery.git] / src / event / eventTest.js
1 module("event");
2
3 test("bind()", function() {
4         expect(9);
5
6         var handler = function(event) {
7                 ok( event.data, "bind() with data, check passed data exists" );
8                 ok( event.data.foo == "bar", "bind() with data, Check value of passed data" );
9         }
10         $("#firstp").bind("click", {foo: "bar"}, handler).click();
11         
12         reset();
13         var handler = function(event, data) {
14                 ok( event.data, "check passed data exists" );
15                 ok( event.data.foo == "bar", "Check value of passed data" );
16                 ok( data, "Check trigger data" );
17                 ok( data.bar == "foo", "Check value of trigger data" );
18         }
19         $("#firstp").bind("click", {foo: "bar"}, handler).trigger("click", [{bar: "foo"}]);
20
21         var counter = 0;
22         function selectOnChange(event) {
23                 equals( event.data, counter++, "Event.data is not a global event object" );
24         }
25         $("select").each(function(i){
26                 $(this).bind('change', i, selectOnChange);
27         }).trigger('change');
28 });
29
30 test("click()", function() {
31         expect(3);
32         $('<li><a href="#">Change location</a></li>').prependTo('#firstUL').find('a').bind('click', function() {
33             var close = $('spanx', this); // same with $(this).find('span');
34             ok( close.length == 0, "Context element does not exist, length must be zero" );
35             ok( !close[0], "Context element does not exist, direct access to element must return undefined" );
36             return false;
37         }).click();
38         
39         $("#check1").click(function() {
40                 ok( true, "click event handler for checkbox gets fired twice, see #815" );
41         }).click();
42 });
43
44 test("unbind(event)", function() {
45         expect(6);
46         var el = $("#firstp");
47         el.click(function() {
48                 ok( true, "Fake normal bind" );
49         });
50         el.click(function(event) {
51                 el.unbind(event);
52                 ok( true, "Fake onebind" );
53         });
54         el.click().click();
55         
56         el.click(function() { return; });
57         el.unbind('click');
58         ok( !el[0].onclick, "Handler is removed" ); // Bug #964
59
60         el.click(function() { return; });
61         el.unbind('change',function(){ return; });
62         for (var ret in el[0].$events['click']) break;
63         ok( ret, "Extra handlers weren't accidentally removed." );
64
65         el.unbind('click');
66         ok( !el[0].$events, "Removed the events expando after all handlers are unbound." );
67 });
68
69 test("trigger(event, [data]", function() {
70         expect(3);
71         var handler = function(event, a, b, c) {
72                 ok( a == 1, "check passed data" );
73                 ok( b == "2", "check passed data" );
74                 ok( c == "abc", "check passed data" );
75         }
76         $("#firstp").bind("click", handler).trigger("click", [1, "2", "abc"]);
77 });
78
79 test("toggle(Function, Function)", function() {
80         expect(4);
81         var count = 0,
82                 fn1 = function(e) { count++; },
83                 fn2 = function(e) { count--; },
84                 preventDefault = function(e) { e.preventDefault() },
85                 link = $('#mark');
86         link.click(preventDefault).click().toggle(fn1, fn2).click().click().click().click().click();
87         ok( count == 1, "Check for toggle(fn, fn)" );
88         
89         var first = 0;
90         $("#simon1").one("click", function() {
91                 ok( true, "Execute event only once" );
92                 $(this).toggle(function() {
93                         ok( first++ == 0, "toggle(Function,Function) assigned from within one('xxx'), see #1054" );
94                 }, function() {
95                         ok( first == 1, "toggle(Function,Function) assigned from within one('xxx'), see #1054" );
96                 });
97                 return false;
98         }).click().click().click();
99 });