| define( [ | 
 | 	"../core", | 
 |  | 
 | 	"../event", | 
 | 	"../event/trigger" | 
 | ], function( jQuery ) { | 
 |  | 
 | "use strict"; | 
 |  | 
 | jQuery.fn.extend( { | 
 |  | 
 | 	bind: function( types, data, fn ) { | 
 | 		return this.on( types, null, data, fn ); | 
 | 	}, | 
 | 	unbind: function( types, fn ) { | 
 | 		return this.off( types, null, fn ); | 
 | 	}, | 
 |  | 
 | 	delegate: function( selector, types, data, fn ) { | 
 | 		return this.on( types, selector, data, fn ); | 
 | 	}, | 
 | 	undelegate: function( selector, types, fn ) { | 
 |  | 
 | 		// ( namespace ) or ( selector, types [, fn] ) | 
 | 		return arguments.length === 1 ? | 
 | 			this.off( selector, "**" ) : | 
 | 			this.off( types, selector || "**", fn ); | 
 | 	}, | 
 |  | 
 | 	hover: function( fnOver, fnOut ) { | 
 | 		return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver ); | 
 | 	} | 
 | } ); | 
 |  | 
 | jQuery.each( | 
 | 	( "blur focus focusin focusout resize scroll click dblclick " + | 
 | 	"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " + | 
 | 	"change select submit keydown keypress keyup contextmenu" ).split( " " ), | 
 | 	function( _i, name ) { | 
 |  | 
 | 		// Handle event binding | 
 | 		jQuery.fn[ name ] = function( data, fn ) { | 
 | 			return arguments.length > 0 ? | 
 | 				this.on( name, null, data, fn ) : | 
 | 				this.trigger( name ); | 
 | 		}; | 
 | 	} | 
 | ); | 
 |  | 
 | } ); |