// Handle triggering a single element
} else if ( element["on" + type] ) {
- if ( element[ type ] && element[ type ].constructor == Function )
- element[ type ]();
- else {
- // Pass along a fake event
- data.unshift( this.fix({ type: type, target: element }) );
+ // Pass along a fake event
+ data.unshift( this.fix({ type: type, target: element }) );
- // Trigger the event
- element["on" + type].apply( element, data );
- }
+ // Trigger the event
+ var val = element["on" + type].apply( element, data );
+
+ if ( val !== false && jQuery.isFunction( element[ type ] ) )
+ element[ type ]();
}
},
event.target = event.srcElement;
// Calculate pageX/Y if missing and clientX/Y available
- if ( typeof event.pageX == "undefined" && typeof event.clientX != "undefined" ) {
+ if ( event.pageX == undefined && event.clientX != undefined ) {
var e = document.documentElement, b = document.body;
event.pageX = event.clientX + (e.scrollLeft || b.scrollLeft);
event.pageY = event.clientY + (e.scrollTop || b.scrollTop);
* and attaching a function to that. By using this method, your bound Function
* will be called the instant the DOM is ready to be read and manipulated,
* which is exactly what 99.99% of all Javascript code needs to run.
+ *
+ * There is one argument passed to the ready event handler: A reference to
+ * the jQuery function. You can name that argument whatever you like, and
+ * can therefore stick with the $ alias without risc of naming collisions.
*
* Please ensure you have no code in your <body> onload event handler,
* otherwise $(document).ready() may not fire.
*
* @example $(document).ready(function(){ Your code here... });
*
+ * @example jQuery(function($) {
+ * // Your code using failsafe $ alias here...
+ * });
+ * @desc Uses both the shortcut for $(document).ready() and the argument
+ * to write failsafe jQuery code using the $ alias, without relying on the
+ * global alias.
+ *
* @name ready
* @type jQuery
* @param Function fn The function to be executed when the DOM is ready.
* @cat Events
+ * @see $.noConflict()
+ * @see $(Function)
*/
ready: function(f) {
// If the DOM is already ready
if ( jQuery.isReady )
// Execute the function immediately
- f.apply( document );
+ f.apply( document, [jQuery] );
// Otherwise, remember the function for later
else {
// Add the function to the wait list
- jQuery.readyList.push( f );
+ jQuery.readyList.push( function() { return f.apply(this, [jQuery]) } );
}
return this;