+test("bind(), multiple events at once and namespaces", function() {
+ expect(7);
+
+ var cur, obj = {};
+
+ var div = jQuery("<div/>").bind("focusin.a", function(e) {
+ equals( e.type, cur, "Verify right single event was fired." );
+ });
+
+ cur = "focusin";
+ div.trigger("focusin.a");
+
+ div = jQuery("<div/>").bind("click mouseover", obj, function(e) {
+ equals( e.type, cur, "Verify right multi event was fired." );
+ equals( e.data, obj, "Make sure the data came in correctly." );
+ });
+
+ cur = "click";
+ div.trigger("click");
+
+ cur = "mouseover";
+ div.trigger("mouseover");
+
+ div = jQuery("<div/>").bind("focusin.a focusout.b", function(e) {
+ equals( e.type, cur, "Verify right multi event was fired." );
+ });
+
+ cur = "focusin";
+ div.trigger("focusin.a");
+
+ cur = "focusout";
+ div.trigger("focusout.b");
+});
+
+test("bind(), namespace with special add", function() {
+ expect(18);
+
+ var div = jQuery("<div/>").bind("test", function(e) {
+ ok( true, "Test event fired." );
+ });
+
+ var i = 0;
+
+ jQuery.event.special.test = {
+ _default: function(e) {
+ equals( this, document, "Make sure we're at the top of the chain." );
+ equals( e.type, "test", "And that we're still dealing with a test event." );
+ equals( e.target, div[0], "And that the target is correct." );
+ },
+ setup: function(){},
+ teardown: function(){},
+ add: function( handler, data, namespaces ) {
+ return function(e) {
+ e.xyz = ++i;
+ handler.apply( this, arguments );
+ };
+ },
+ remove: function() {}
+ };
+
+ div.bind("test.a", {x: 1}, function(e) {
+ ok( !!e.xyz, "Make sure that the data is getting passed through." );
+ equals( e.data.x, 1, "Make sure data is attached properly." );
+ });
+
+ div.bind("test.b", {x: 2}, function(e) {
+ ok( !!e.xyz, "Make sure that the data is getting passed through." );
+ equals( e.data.x, 2, "Make sure data is attached properly." );
+ });
+
+ // Should trigger 5
+ div.trigger("test");
+
+ // Should trigger 2
+ div.trigger("test.a");
+
+ // Should trigger 2
+ div.trigger("test.b");
+});
+