"../data/var/acceptData",
], function( jQuery, document, dataPriv, acceptData, hasOwn ) {
var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/;
jQuery.extend( jQuery.event, {
trigger: function( event, data, elem, onlyHandlers ) {
var i, cur, tmp, bubbleType, ontype, handle, special,
eventPath = [ elem || document ],
type = hasOwn.call( event, "type" ) ? event.type : event,
namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : [];
cur = tmp = elem = elem || document;
if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
if ( rfocusMorph.test( type + jQuery.event.triggered ) ) {
if ( type.indexOf( "." ) > -1 ) {
namespaces = type.split( "." );
type = namespaces.shift();
ontype = type.indexOf( ":" ) < 0 && "on" + type;
event = event[ jQuery.expando ] ?
new jQuery.Event( type, typeof event === "object" && event );
event.isTrigger = onlyHandlers ? 2 : 3;
event.namespace = namespaces.join( "." );
event.rnamespace = event.namespace ?
new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) :
event.result = undefined;
jQuery.makeArray( data, [ event ] );
special = jQuery.event.special[ type ] || {};
if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {
if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {
bubbleType = special.delegateType || type;
if ( !rfocusMorph.test( bubbleType + type ) ) {
for ( ; cur; cur = cur.parentNode ) {
if ( tmp === ( elem.ownerDocument || document ) ) {
eventPath.push( tmp.defaultView || tmp.parentWindow || window );
while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {
special.bindType || type;
handle = ( dataPriv.get( cur, "events" ) || {} )[ event.type ] &&
dataPriv.get( cur, "handle" );
handle.apply( cur, data );
handle = ontype && cur[ ontype ];
if ( handle && handle.apply && acceptData( cur ) ) {
event.result = handle.apply( cur, data );
if ( event.result === false ) {
if ( !onlyHandlers && !event.isDefaultPrevented() ) {
if ( ( !special._default ||
special._default.apply( eventPath.pop(), data ) === false ) &&
if ( ontype && jQuery.isFunction( elem[ type ] ) && !jQuery.isWindow( elem ) ) {
jQuery.event.triggered = type;
jQuery.event.triggered = undefined;
simulate: function( type, elem, event ) {
jQuery.event.trigger( e, null, elem );
trigger: function( type, data ) {
return this.each( function() {
jQuery.event.trigger( type, data, this );
triggerHandler: function( type, data ) {
return jQuery.event.trigger( type, data, elem, true );