data.unshift( this.fix({ type: type, target: element }) );
// Trigger the event
- if ( jQuery.isFunction(element.$handle) && (val = element.$handle.apply( element, data )) !== false )
- this.triggered = true;
+ if ( jQuery.isFunction( element.$handle ) )
+ val = element.$handle.apply( element, data );
+ if ( !fn && element["on"+type] && element["on"+type].apply( element, data ) === false )
+ val = false;
- if ( fn && val !== false && !jQuery.nodeName(element, 'a') )
+ if ( fn && val !== false && !(jQuery.nodeName(element, 'a') && type == "click") ) {
+ this.triggered = true;
element[ type ]();
+ }
this.triggered = false;
}
// Calculate pageX/Y if missing and clientX/Y available
if ( event.pageX == null && event.clientX != null ) {
var e = document.documentElement, b = document.body;
- event.pageX = event.clientX + (e && e.scrollLeft || b.scrollLeft);
- event.pageY = event.clientY + (e && e.scrollTop || b.scrollTop);
+ event.pageX = event.clientX + (e && e.scrollLeft || b.scrollLeft || 0);
+ event.pageY = event.clientY + (e && e.scrollTop || b.scrollTop || 0);
}
// Add which for key events