jQuery.fn.extend({
-
- /**
- * Displays each of the set of matched elements if they are hidden.
- *
- * @example $("p").show()
- * @before <p style="display: none">Hello</p>
- * @result [ <p style="display: block">Hello</p> ]
- *
- * @name show
- * @type jQuery
- * @cat Effects
- */
-
- /**
- * Show all matched elements using a graceful animation and firing an
- * optional callback after completion.
- *
- * The height, width, and opacity of each of the matched elements
- * are changed dynamically according to the specified speed.
- *
- * @example $("p").show("slow");
- *
- * @example $("p").show("slow",function(){
- * alert("Animation Done.");
- * });
- *
- * @name show
- * @type jQuery
- * @param String|Number speed A string representing one of the three predefined speeds ("slow", "normal", or "fast") or the number of milliseconds to run the animation (e.g. 1000).
- * @param Function callback (optional) A function to be executed whenever the animation completes.
- * @cat Effects
- * @see hide(String|Number,Function)
- */
show: function(speed,callback){
return speed ?
this.animate({
}).end();
},
- /**
- * Hides each of the set of matched elements if they are shown.
- *
- * @example $("p").hide()
- * @before <p>Hello</p>
- * @result [ <p style="display: none">Hello</p> ]
- *
- * @name hide
- * @type jQuery
- * @cat Effects
- */
-
- /**
- * Hide all matched elements using a graceful animation and firing an
- * optional callback after completion.
- *
- * The height, width, and opacity of each of the matched elements
- * are changed dynamically according to the specified speed.
- *
- * @example $("p").hide("slow");
- *
- * @example $("p").hide("slow",function(){
- * alert("Animation Done.");
- * });
- *
- * @name hide
- * @type jQuery
- * @param String|Number speed A string representing one of the three predefined speeds ("slow", "normal", or "fast") or the number of milliseconds to run the animation (e.g. 1000).
- * @param Function callback (optional) A function to be executed whenever the animation completes.
- * @cat Effects
- * @see show(String|Number,Function)
- */
hide: function(speed,callback){
return speed ?
this.animate({
// Save the old toggle function
_toggle: jQuery.fn.toggle,
- /**
- * Toggles each of the set of matched elements. If they are shown,
- * toggle makes them hidden. If they are hidden, toggle
- * makes them shown.
- *
- * @example $("p").toggle()
- * @before <p>Hello</p><p style="display: none">Hello Again</p>
- * @result [ <p style="display: none">Hello</p>, <p style="display: block">Hello Again</p> ]
- *
- * @name toggle
- * @type jQuery
- * @cat Effects
- */
toggle: function( fn, fn2 ){
return jQuery.isFunction(fn) && jQuery.isFunction(fn2) ?
this._toggle( fn, fn2 ) :
});
},
- /**
- * Reveal all matched elements by adjusting their height and firing an
- * optional callback after completion.
- *
- * Only the height is adjusted for this animation, causing all matched
- * elements to be revealed in a "sliding" manner.
- *
- * @example $("p").slideDown("slow");
- *
- * @example $("p").slideDown("slow",function(){
- * alert("Animation Done.");
- * });
- *
- * @name slideDown
- * @type jQuery
- * @param String|Number speed (optional) A string representing one of the three predefined speeds ("slow", "normal", or "fast") or the number of milliseconds to run the animation (e.g. 1000).
- * @param Function callback (optional) A function to be executed whenever the animation completes.
- * @cat Effects
- * @see slideUp(String|Number,Function)
- * @see slideToggle(String|Number,Function)
- */
slideDown: function(speed,callback){
return this.animate({height: "show"}, speed, callback);
},
- /**
- * Hide all matched elements by adjusting their height and firing an
- * optional callback after completion.
- *
- * Only the height is adjusted for this animation, causing all matched
- * elements to be hidden in a "sliding" manner.
- *
- * @example $("p").slideUp("slow");
- *
- * @example $("p").slideUp("slow",function(){
- * alert("Animation Done.");
- * });
- *
- * @name slideUp
- * @type jQuery
- * @param String|Number speed (optional) A string representing one of the three predefined speeds ("slow", "normal", or "fast") or the number of milliseconds to run the animation (e.g. 1000).
- * @param Function callback (optional) A function to be executed whenever the animation completes.
- * @cat Effects
- * @see slideDown(String|Number,Function)
- * @see slideToggle(String|Number,Function)
- */
slideUp: function(speed,callback){
return this.animate({height: "hide"}, speed, callback);
},
- /**
- * Toggle the visibility of all matched elements by adjusting their height and firing an
- * optional callback after completion.
- *
- * Only the height is adjusted for this animation, causing all matched
- * elements to be hidden in a "sliding" manner.
- *
- * @example $("p").slideToggle("slow");
- *
- * @example $("p").slideToggle("slow",function(){
- * alert("Animation Done.");
- * });
- *
- * @name slideToggle
- * @type jQuery
- * @param String|Number speed (optional) A string representing one of the three predefined speeds ("slow", "normal", or "fast") or the number of milliseconds to run the animation (e.g. 1000).
- * @param Function callback (optional) A function to be executed whenever the animation completes.
- * @cat Effects
- * @see slideDown(String|Number,Function)
- * @see slideUp(String|Number,Function)
- */
slideToggle: function(speed, callback){
return this.animate({height: "toggle"}, speed, callback);
},
- /**
- * Fade in all matched elements by adjusting their opacity and firing an
- * optional callback after completion.
- *
- * Only the opacity is adjusted for this animation, meaning that
- * all of the matched elements should already have some form of height
- * and width associated with them.
- *
- * @example $("p").fadeIn("slow");
- *
- * @example $("p").fadeIn("slow",function(){
- * alert("Animation Done.");
- * });
- *
- * @name fadeIn
- * @type jQuery
- * @param String|Number speed (optional) A string representing one of the three predefined speeds ("slow", "normal", or "fast") or the number of milliseconds to run the animation (e.g. 1000).
- * @param Function callback (optional) A function to be executed whenever the animation completes.
- * @cat Effects
- * @see fadeOut(String|Number,Function)
- * @see fadeTo(String|Number,Number,Function)
- */
fadeIn: function(speed, callback){
return this.animate({opacity: "show"}, speed, callback);
},
- /**
- * Fade out all matched elements by adjusting their opacity and firing an
- * optional callback after completion.
- *
- * Only the opacity is adjusted for this animation, meaning that
- * all of the matched elements should already have some form of height
- * and width associated with them.
- *
- * @example $("p").fadeOut("slow");
- *
- * @example $("p").fadeOut("slow",function(){
- * alert("Animation Done.");
- * });
- *
- * @name fadeOut
- * @type jQuery
- * @param String|Number speed (optional) A string representing one of the three predefined speeds ("slow", "normal", or "fast") or the number of milliseconds to run the animation (e.g. 1000).
- * @param Function callback (optional) A function to be executed whenever the animation completes.
- * @cat Effects
- * @see fadeIn(String|Number,Function)
- * @see fadeTo(String|Number,Number,Function)
- */
fadeOut: function(speed, callback){
return this.animate({opacity: "hide"}, speed, callback);
},
- /**
- * Fade the opacity of all matched elements to a specified opacity and firing an
- * optional callback after completion.
- *
- * Only the opacity is adjusted for this animation, meaning that
- * all of the matched elements should already have some form of height
- * and width associated with them.
- *
- * @example $("p").fadeTo("slow", 0.5);
- *
- * @example $("p").fadeTo("slow", 0.5, function(){
- * alert("Animation Done.");
- * });
- *
- * @name fadeTo
- * @type jQuery
- * @param String|Number speed A string representing one of the three predefined speeds ("slow", "normal", or "fast") or the number of milliseconds to run the animation (e.g. 1000).
- * @param Number opacity The opacity to fade to (a number from 0 to 1).
- * @param Function callback (optional) A function to be executed whenever the animation completes.
- * @cat Effects
- * @see fadeIn(String|Number,Function)
- * @see fadeOut(String|Number,Function)
- */
fadeTo: function(speed,to,callback){
return this.animate({opacity: to}, speed, callback);
},
- /**
- * A function for making your own, custom animations. The key aspect of
- * this function is the object of style properties that will be animated,
- * and to what end. Each key within the object represents a style property
- * that will also be animated (for example: "height", "top", or "opacity").
- *
- * Note that properties should be specified using camel case
- * eg. marginLeft instead of margin-left.
- *
- * The value associated with the key represents to what end the property
- * will be animated. If a number is provided as the value, then the style
- * property will be transitioned from its current state to that new number.
- * Otherwise if the string "hide", "show", or "toggle" is provided, a default
- * animation will be constructed for that property.
- *
- * @example $("p").animate({
- * height: 'toggle', opacity: 'toggle'
- * }, "slow");
- *
- * @example $("p").animate({
- * left: 50, opacity: 'show'
- * }, 500);
- *
- * @example $("p").animate({
- * opacity: 'show'
- * }, "slow", "easein");
- * @desc An example of using an 'easing' function to provide a different style of animation. This will only work if you have a plugin that provides this easing function (Only "swing" and "linear" are provided by default, with jQuery).
- *
- * @name animate
- * @type jQuery
- * @param Hash params A set of style attributes that you wish to animate, and to what end.
- * @param String|Number speed (optional) A string representing one of the three predefined speeds ("slow", "normal", or "fast") or the number of milliseconds to run the animation (e.g. 1000).
- * @param String easing (optional) The name of the easing effect that you want to use (e.g. "swing" or "linear"). Defaults to "swing".
- * @param Function callback (optional) A function to be executed whenever the animation completes.
- * @cat Effects
- */
animate: function( prop, speed, easing, callback ) {
return this.queue(function(){
var hidden = jQuery(this).is(":hidden"),
jQuery.each( prop, function(name, val){
var e = new jQuery.fx( self, opt, name );
if ( val.constructor == Number )
- e.custom( e.cur(), val );
+ e.custom( e.cur() || 0, val );
else
e[ val == "toggle" ? hidden ? "show" : "hide" : val ]( prop );
});
+
+ // For JS strict compliance
+ return true;
});
},
- /**
- *
- * @private
- */
queue: function(type,fn){
if ( !fn ) {
fn = type;
if ( this.queue[type].length == 1 )
fn.apply(this);
});
+ },
+
+ stop: function(){
+ var timers = jQuery.timers;
+
+ return this.each(function(){
+ for ( var i = 0; i < timers.length; i++ )
+ if ( timers[i].elem == this )
+ timers.splice(i--, 1);
+ });
}
});
complete: fn || !fn && easing ||
jQuery.isFunction( speed ) && speed,
duration: speed,
- easing: fn && easing || easing && easing.constructor != Function && easing || (jQuery.easing.swing ? "swing" : "linear")
+ easing: fn && easing || easing && easing.constructor != Function && easing
};
opt.duration = (opt.duration && opt.duration.constructor == Number ?
timers: [],
- /*
- * I originally wrote fx() as a clone of moo.fx and in the process
- * of making it small in size the code became illegible to sane
- * people. You've been warned.
- */
-
fx: function( elem, options, prop ){
- var z = this;
-
- // The styles
- var y = elem.style;
+ var z = this, y = elem.style,
+ isprop = elem[prop] != null && y[prop] == null;
// Simple function for setting a style value
z.a = function(){
if ( prop == "opacity" )
jQuery.attr(y, "opacity", z.now); // Let attr handle opacity
else {
- y[prop] = parseInt(z.now) + "px";
+ if ( isprop )
+ elem[prop] = parseInt(z.now);
+ else
+ y[prop] = parseInt(z.now) + "px";
// Set display property to block for height/width animations
if ( prop == "height" || prop == "width" )
// Get the current size
z.cur = function(){
+ if ( isprop ) return elem[prop];
var r = parseFloat( jQuery.curCSS(elem, prop) );
return r && r > -10000 ? r : z.max();
};
z.now = from;
z.a();
- jQuery.timers.push(function(){
+ function t(){
return z.step(from, to);
- });
+ }
+
+ t.elem = elem;
+
+ jQuery.timers.push(t);
if ( jQuery.timers.length == 1 ) {
var timer = setInterval(function(){
var p = n / options.duration;
// Perform the easing function, defaults to swing
- z.now = jQuery.easing[options.easing](p, n, firstNum, (lastNum-firstNum), options.duration);
+ z.now = jQuery.easing[options.easing || (jQuery.easing.swing ? "swing" : "linear")](p, n, firstNum, (lastNum-firstNum), options.duration);
// Perform the next step of the animation
z.a();