+test("unbind(type)", function() {
+ expect( 0 );
+
+ var $elem = jQuery("#firstp"),
+ message;
+
+ function error(){
+ ok( false, message );
+ }
+
+ message = "unbind passing function";
+ $elem.bind('error', error).unbind('error',error).triggerHandler('error');
+
+ message = "unbind all from event";
+ $elem.bind('error', error).unbind('error').triggerHandler('error');
+
+ message = "unbind all";
+ $elem.bind('error', error).unbind().triggerHandler('error');
+
+ message = "unbind many with function";
+ $elem.bind('error error2',error)
+ .unbind('error error2', error )
+ .trigger('error').triggerHandler('error2');
+
+ message = "unbind many"; // #3538
+ $elem.bind('error error2',error)
+ .unbind('error error2')
+ .trigger('error').triggerHandler('error2');
+});
+
+test("unbind(eventObject)", function() {
+ expect(4);
+
+ var $elem = jQuery("#firstp"),
+ num;
+
+ function assert( expected ){
+ num = 0;
+ $elem.trigger('foo').triggerHandler('bar');
+ equals( num, expected, "Check the right handlers are triggered" );
+ }
+
+ $elem
+ // This handler shouldn't be unbound
+ .bind('foo', function(){
+ num += 1;
+ })
+ .bind('foo', function(e){
+ $elem.unbind( e )
+ num += 2;
+ })
+ // Neither this one
+ .bind('bar', function(){
+ num += 4;
+ });
+
+ assert( 7 );
+ assert( 5 );
+
+ $elem.unbind('bar');
+ assert( 1 );
+
+ $elem.unbind();
+ assert( 0 );
+});
+