trigger: function(type, data, elem, donative, extra) {
// Clone the incoming data, if any
- data = jQuery.makeArray(data || []);
+ data = jQuery.makeArray(data);
if ( type.indexOf("!") >= 0 ) {
type = type.slice(0, -1);
// Pass along a fake event
if ( event )
- data.unshift( this.fix({ type: type, target: elem }) );
+ data.unshift( { type: type, target: elem } );
// Enforce the right trigger type
data[0].type = type;
// Clean up added properties in IE to prevent memory leak
if (jQuery.browser.msie)
event.target = event.preventDefault = event.stopPropagation =
- event.handler = event.data = null;
+ event.handler = event.data = event[expando] = null;
return val;
},
fix: function(event) {
+ if ( event[expando] == true )
+ return event;
+
// store a copy of the original event object
// and clone to set read-only properties
var originalEvent = event;
event = jQuery.extend({}, originalEvent);
+ // Mark it as fixed
+ event[expando] = true;
+
// add preventDefault and stopPropagation since
// they will not work on the clone
event.preventDefault = function() {