Followup to #8753. Modify new Event constructor signature to jQuery.event(type, props), which can be exploited by jQuery.event.trigger as well.

This commit is contained in:
Dave Methvin 2011-04-12 19:29:09 -04:00
parent 6d49e84daf
commit bebd8bc01e
2 changed files with 11 additions and 17 deletions

View file

@ -304,9 +304,9 @@ jQuery.event = {
// jQuery.Event object
event[ jQuery.expando ] ? event :
// Object literal
jQuery.extend( new jQuery.Event(type), event ) :
new jQuery.Event( type, event ) :
// Just the event type (string)
new jQuery.Event(type);
new jQuery.Event( type );
event.type = type;
event.namespace = namespaces.join(".");
@ -563,26 +563,15 @@ jQuery.removeEvent = document.removeEventListener ?
}
};
jQuery.Event = function( src ) {
jQuery.Event = function( src, props ) {
// Allow instantiation without the 'new' keyword
if ( !this.preventDefault ) {
return new jQuery.Event( src );
return new jQuery.Event( src, props );
}
// Event object
if ( src && src.type ) {
this.originalEvent = src;
// Push explicitly provided properties onto the event object
for ( var prop in src ) {
// Ensure we don't clobber jQuery.Event prototype
// with own properties.
if ( hasOwn.call( src, prop ) ) {
this[ prop ] = src[ prop ];
}
}
// Always ensure a type has been explicitly set
this.type = src.type;
// Events bubbling up the document may have been marked as prevented
@ -595,6 +584,11 @@ jQuery.Event = function( src ) {
this.type = src;
}
// Put explicitly provided properties onto the event object
if ( props ) {
jQuery.extend( this, props );
}
// timeStamp is buggy for some events on Firefox(#3843)
// So we won't rely on the native value
this.timeStamp = jQuery.now();