diff options
author | John Resig <jeresig@gmail.com> | 2007-01-07 21:43:38 +0000 |
---|---|---|
committer | John Resig <jeresig@gmail.com> | 2007-01-07 21:43:38 +0000 |
commit | 0798c6e64e4e0c984d5ece50ade61827c2105c39 (patch) | |
tree | 2eff023cf1f392e2b9ea7da7119490e959010707 /src | |
parent | 386c0bc8a686eaa90be12dd1c6690668ff7442c7 (diff) | |
download | jquery-0798c6e64e4e0c984d5ece50ade61827c2105c39.tar.gz jquery-0798c6e64e4e0c984d5ece50ade61827c2105c39.zip |
Reorganized the different effects to be in fx.js, instead of jquery.js - and cleaned up some of the documentation.
Diffstat (limited to 'src')
-rw-r--r-- | src/event/event.js | 40 | ||||
-rw-r--r-- | src/fx/fx.js | 1032 | ||||
-rw-r--r-- | src/jquery/jquery.js | 4 |
3 files changed, 564 insertions, 512 deletions
diff --git a/src/event/event.js b/src/event/event.js index 6e8a45f81..4a6331670 100644 --- a/src/event/event.js +++ b/src/event/event.js @@ -187,32 +187,32 @@ jQuery.fn.extend({ * data as the second paramter (and the handler function as the third), see * second example. * - * @example $("p").bind( "click", function() { + * @example $("p").bind("click", function(){ * alert( $(this).text() ); - * } ) + * }); * @before <p>Hello</p> * @result alert("Hello") * - * @example var handler = function(event) { + * @example function handler(event) { * alert(event.data.foo); - * }; - * $("p").bind( "click", {foo: "bar"}, handler) + * } + * $("p").bind("click", {foo: "bar"}, handler) * @result alert("bar") * @desc Pass some additional data to the event handler. * - * @example $("form").bind( "submit", function() { return false; } ) + * @example $("form").bind("submit", function() { return false; }) * @desc Cancel a default action and prevent it from bubbling by returning false * from your function. * - * @example $("form").bind( "submit", function(event) { + * @example $("form").bind("submit", function(event){ * event.preventDefault(); - * } ); + * }); * @desc Cancel only the default action by using the preventDefault method. * * - * @example $("form").bind( "submit", function(event) { + * @example $("form").bind("submit", function(event){ * event.stopPropagation(); - * } ) + * }); * @desc Stop only an event from bubbling by using the stopPropagation method. * * @name bind @@ -241,9 +241,9 @@ jQuery.fn.extend({ * data as the second paramter (and the handler function as the third), see * second example. * - * @example $("p").one( "click", function() { + * @example $("p").one("click", function(){ * alert( $(this).text() ); - * } ) + * }); * @before <p>Hello</p> * @result alert("Hello") * @@ -316,10 +316,6 @@ jQuery.fn.extend({ }); }, - // We're overriding the old toggle function, so - // remember it for later - _toggle: jQuery.fn.toggle, - /** * Toggle between two function calls every other click. * Whenever a matched element is clicked, the first specified function @@ -341,9 +337,10 @@ jQuery.fn.extend({ * @cat Events */ toggle: function() { - // save reference to arguments for access in closure + // Save reference to arguments for access in closure var a = arguments; - return typeof a[0] == "function" && typeof a[1] == "function" ? this.click(function(e) { + + return this.click(function(e) { // Figure out which function to execute this.lastToggle = this.lastToggle == 0 ? 1 : 0; @@ -352,10 +349,7 @@ jQuery.fn.extend({ // and execute the function return a[this.lastToggle].apply( this, [e] ) || false; - }) : - - // Otherwise, execute the old toggle function - this._toggle.apply( this, arguments ); + }); }, /** @@ -881,4 +875,4 @@ if (jQuery.browser.msie) jQuery.event.remove(els[i-1], type); while (--i); } - });
\ No newline at end of file + }); diff --git a/src/fx/fx.js b/src/fx/fx.js index 36a8c108c..6dd3279d8 100644 --- a/src/fx/fx.js +++ b/src/fx/fx.js @@ -1,506 +1,564 @@ -jQuery.fn.extend({
-
- // overwrite the old show method
- _show: jQuery.fn.show,
-
- /**
- * 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({
- height: "show", width: "show", opacity: "show"
- }, speed, callback) : this._show();
- },
-
- // Overwrite the old hide method
- _hide: jQuery.fn.hide,
-
- /**
- * 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({
- height: "hide", width: "hide", opacity: "hide"
- }, speed, callback) : this._hide();
- },
-
- /**
- * 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.each(function(){
- var state = jQuery(this).is(":hidden") ? "show" : "hide";
- jQuery(this).animate({height: state}, 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").
- *
- * 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.
- * Oterwise 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'
+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({ + height: "show", width: "show", opacity: "show" + }, speed, callback) : + + this.each(function(){ + this.style.display = this.oldblock ? this.oldblock : ""; + if ( jQuery.css(this,"display") == "none" ) + this.style.display = "block"; + }); + }, + + /** + * 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({ + height: "hide", width: "hide", opacity: "hide" + }, speed, callback) : + + this.each(function(){ + this.oldblock = this.oldblock || jQuery.css(this,"display"); + if ( this.oldblock == "none" ) + this.oldblock = "block"; + this.style.display = "none"; + }); + }, + + // 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 fn ? + this._toggle( fn, fn2 ) : + this.each(function(){ + jQuery(this)[ jQuery(this).is(":hidden") ? "show" : "hide" ] + .apply( jQuery(this), arguments ); + }); + }, + + /** + * 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.each(function(){ + var state = jQuery(this).is(":hidden") ? "show" : "hide"; + jQuery(this).animate({height: state}, 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"). + * + * 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. + * Oterwise 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'
+ * @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 'linear' is 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.
+ * @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 'linear' is 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 (Plugin Required).
- * @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(){
-
+ * @param String easing (optional) The name of the easing effect that you want to use (Plugin Required). + * @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(){ + this.curAnim = jQuery.extend({}, prop); - var opt = jQuery.speed(speed, easing, callback);
-
- for ( var p in prop ) {
- var e = new jQuery.fx( this, opt, p );
- if ( prop[p].constructor == Number )
- e.custom( e.cur(), prop[p] );
- else
- e[ prop[p] ]( prop );
- }
-
- });
- },
-
- /**
- *
- * @private
- */
- queue: function(type,fn){
- if ( !fn ) {
- fn = type;
- type = "fx";
- }
-
- return this.each(function(){
- if ( !this.queue )
- this.queue = {};
-
- if ( !this.queue[type] )
- this.queue[type] = [];
-
- this.queue[type].push( fn );
-
- if ( this.queue[type].length == 1 )
- fn.apply(this);
- });
- }
-
-});
-
-jQuery.extend({
-
- speed: function(speed, easing, fn) {
+ var opt = jQuery.speed(speed, easing, callback); + + for ( var p in prop ) { + var e = new jQuery.fx( this, opt, p ); + if ( prop[p].constructor == Number ) + e.custom( e.cur(), prop[p] ); + else + e[ prop[p] ]( prop ); + } + + }); + }, + + /** + * + * @private + */ + queue: function(type,fn){ + if ( !fn ) { + fn = type; + type = "fx"; + } + + return this.each(function(){ + if ( !this.queue ) + this.queue = {}; + + if ( !this.queue[type] ) + this.queue[type] = []; + + this.queue[type].push( fn ); + + if ( this.queue[type].length == 1 ) + fn.apply(this); + }); + } + +}); + +jQuery.extend({ + + speed: function(speed, easing, fn) { var opt = speed.constructor == Object ? speed : { complete: fn || !fn && easing || speed.constructor == Function && speed, duration: speed, easing: fn && easing || easing && easing.constructor != Function && easing }; -
+ opt.duration = (opt.duration.constructor == Number ? opt.duration : - { slow: 600, fast: 200 }[opt.duration]) || 400;
-
- // Queueing
- opt.oldComplete = opt.complete;
- opt.complete = function(){
- jQuery.dequeue(this, "fx");
- if ( opt.oldComplete && opt.oldComplete.constructor == Function )
- opt.oldComplete.apply( this );
- };
-
- return opt;
+ { slow: 600, fast: 200 }[opt.duration]) || 400; + + // Queueing + opt.oldComplete = opt.complete; + opt.complete = function(){ + jQuery.dequeue(this, "fx"); + if ( opt.oldComplete && opt.oldComplete.constructor == Function ) + opt.oldComplete.apply( this ); + }; + + return opt; + }, + + easing: {}, + + queue: {}, + + dequeue: function(elem,type){ + type = type || "fx"; + + if ( elem.queue && elem.queue[type] ) { + // Remove self + elem.queue[type].shift(); + + // Get next function + var f = elem.queue[type][0]; + + if ( f ) f.apply( elem ); + } }, + + /* + * 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. + */ - easing: {},
-
- queue: {},
-
- dequeue: function(elem,type){
- type = type || "fx";
-
- if ( elem.queue && elem.queue[type] ) {
- // Remove self
- elem.queue[type].shift();
-
- // Get next function
- var f = elem.queue[type][0];
-
- if ( f ) f.apply( elem );
- }
- },
-
- /*
- * 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;
-
- // Store display property
- var oldDisplay = jQuery.css(elem, 'display');
- // Set display property to block for animation
- y.display = "block";
- // Make sure that nothing sneaks out
- y.overflow = "hidden";
-
- // Simple function for setting a style value
- z.a = function(){
- if ( options.step )
- options.step.apply( elem, [ z.now ] );
-
- if ( prop == "opacity" )
- jQuery.attr(y, "opacity", z.now); // Let attr handle opacity
- else if ( parseInt(z.now) ) // My hate for IE will never die
- y[prop] = parseInt(z.now) + "px";
- };
-
- // Figure out the maximum number to run to
- z.max = function(){
- return parseFloat( jQuery.css(elem,prop) );
- };
-
- // Get the current size
- z.cur = function(){
- var r = parseFloat( jQuery.curCSS(elem, prop) );
- return r && r > -10000 ? r : z.max();
- };
-
- // Start an animation from one number to another
- z.custom = function(from,to){
- z.startTime = (new Date()).getTime();
- z.now = from;
- z.a();
-
- z.timer = setInterval(function(){
- z.step(from, to);
- }, 13);
- };
-
- // Simple 'show' function
- z.show = function(){
- if ( !elem.orig ) elem.orig = {};
-
- // Remember where we started, so that we can go back to it later
- elem.orig[prop] = this.cur();
-
- options.show = true;
-
- // Begin the animation
- z.custom(0, elem.orig[prop]);
-
- // Stupid IE, look what you made me do
- if ( prop != "opacity" )
- y[prop] = "1px";
- };
-
- // Simple 'hide' function
- z.hide = function(){
- if ( !elem.orig ) elem.orig = {};
-
- // Remember where we started, so that we can go back to it later
- elem.orig[prop] = this.cur();
-
- options.hide = true;
-
- // Begin the animation
- z.custom(elem.orig[prop], 0);
- };
-
- //Simple 'toggle' function
- z.toggle = function() {
- if ( !elem.orig ) elem.orig = {};
-
- // Remember where we started, so that we can go back to it later
- elem.orig[prop] = this.cur();
-
- if(oldDisplay == 'none') {
- options.show = true;
-
- // Stupid IE, look what you made me do
- if ( prop != "opacity" )
- y[prop] = "1px";
-
- // Begin the animation
- z.custom(0, elem.orig[prop]);
- } else {
- options.hide = true;
-
- // Begin the animation
- z.custom(elem.orig[prop], 0);
- }
- };
-
- // Each step of an animation
- z.step = function(firstNum, lastNum){
- var t = (new Date()).getTime();
-
- if (t > options.duration + z.startTime) {
- // Stop the timer
- clearInterval(z.timer);
- z.timer = null;
-
- z.now = lastNum;
- z.a();
-
- if (elem.curAnim) elem.curAnim[ prop ] = true;
-
- var done = true;
- for ( var i in elem.curAnim )
- if ( elem.curAnim[i] !== true )
- done = false;
-
- if ( done ) {
- // Reset the overflow
- y.overflow = '';
-
- // Reset the display
- y.display = oldDisplay;
- if (jQuery.css(elem, 'display') == 'none')
- y.display = 'block';
-
- // Hide the element if the "hide" operation was done
- if ( options.hide )
- y.display = 'none';
-
- // Reset the properties, if the item has been hidden or shown
- if ( options.hide || options.show )
- for ( var p in elem.curAnim )
- if (p == "opacity")
- jQuery.attr(y, p, elem.orig[p]);
- else
- y[p] = '';
- }
-
- // If a callback was provided, execute it
- if ( done && options.complete && options.complete.constructor == Function )
- // Execute the complete function
- options.complete.apply( elem );
- } else {
- var n = t - this.startTime;
- // Figure out where in the animation we are and set the number
+ fx: function( elem, options, prop ){ + + var z = this; + + // The styles + var y = elem.style; + + // Store display property + var oldDisplay = jQuery.css(elem, 'display'); + // Set display property to block for animation + y.display = "block"; + // Make sure that nothing sneaks out + y.overflow = "hidden"; + + // Simple function for setting a style value + z.a = function(){ + if ( options.step ) + options.step.apply( elem, [ z.now ] ); + + if ( prop == "opacity" ) + jQuery.attr(y, "opacity", z.now); // Let attr handle opacity + else if ( parseInt(z.now) ) // My hate for IE will never die + y[prop] = parseInt(z.now) + "px"; + }; + + // Figure out the maximum number to run to + z.max = function(){ + return parseFloat( jQuery.css(elem,prop) ); + }; + + // Get the current size + z.cur = function(){ + var r = parseFloat( jQuery.curCSS(elem, prop) ); + return r && r > -10000 ? r : z.max(); + }; + + // Start an animation from one number to another + z.custom = function(from,to){ + z.startTime = (new Date()).getTime(); + z.now = from; + z.a(); + + z.timer = setInterval(function(){ + z.step(from, to); + }, 13); + }; + + // Simple 'show' function + z.show = function(){ + if ( !elem.orig ) elem.orig = {}; + + // Remember where we started, so that we can go back to it later + elem.orig[prop] = this.cur(); + + options.show = true; + + // Begin the animation + z.custom(0, elem.orig[prop]); + + // Stupid IE, look what you made me do + if ( prop != "opacity" ) + y[prop] = "1px"; + }; + + // Simple 'hide' function + z.hide = function(){ + if ( !elem.orig ) elem.orig = {}; + + // Remember where we started, so that we can go back to it later + elem.orig[prop] = this.cur(); + + options.hide = true; + + // Begin the animation + z.custom(elem.orig[prop], 0); + }; + + //Simple 'toggle' function + z.toggle = function() { + if ( !elem.orig ) elem.orig = {}; + + // Remember where we started, so that we can go back to it later + elem.orig[prop] = this.cur(); + + if(oldDisplay == 'none') { + options.show = true; + + // Stupid IE, look what you made me do + if ( prop != "opacity" ) + y[prop] = "1px"; + + // Begin the animation + z.custom(0, elem.orig[prop]); + } else { + options.hide = true; + + // Begin the animation + z.custom(elem.orig[prop], 0); + } + }; + + // Each step of an animation + z.step = function(firstNum, lastNum){ + var t = (new Date()).getTime(); + + if (t > options.duration + z.startTime) { + // Stop the timer + clearInterval(z.timer); + z.timer = null; + + z.now = lastNum; + z.a(); + + if (elem.curAnim) elem.curAnim[ prop ] = true; + + var done = true; + for ( var i in elem.curAnim ) + if ( elem.curAnim[i] !== true ) + done = false; + + if ( done ) { + // Reset the overflow + y.overflow = ''; + + // Reset the display + y.display = oldDisplay; + if (jQuery.css(elem, 'display') == 'none') + y.display = 'block'; + + // Hide the element if the "hide" operation was done + if ( options.hide ) + y.display = 'none'; + + // Reset the properties, if the item has been hidden or shown + if ( options.hide || options.show ) + for ( var p in elem.curAnim ) + if (p == "opacity") + jQuery.attr(y, p, elem.orig[p]); + else + y[p] = ''; + } + + // If a callback was provided, execute it + if ( done && options.complete && options.complete.constructor == Function ) + // Execute the complete function + options.complete.apply( elem ); + } else { + var n = t - this.startTime; + // Figure out where in the animation we are and set the number var p = n / options.duration; -
- // If the easing function exists, then use it
+ + // If the easing function exists, then use it z.now = options.easing && jQuery.easing[options.easing] ? jQuery.easing[options.easing](p, n, firstNum, (lastNum-firstNum), options.duration) : // else use default linear easing - ((-Math.cos(p*Math.PI)/2) + 0.5) * (lastNum-firstNum) + firstNum;
-
- // Perform the next step of the animation
- z.a();
- }
- };
-
- }
-});
\ No newline at end of file + ((-Math.cos(p*Math.PI)/2) + 0.5) * (lastNum-firstNum) + firstNum; + + // Perform the next step of the animation + z.a(); + } + }; + + } +}); diff --git a/src/jquery/jquery.js b/src/jquery/jquery.js index e3699ae1f..e566cb671 100644 --- a/src/jquery/jquery.js +++ b/src/jquery/jquery.js @@ -742,7 +742,7 @@ jQuery.fn = jQuery.prototype = { * @example $("p").find("span").end(); * @before <p><span>Hello</span>, how are you?</p> * @result [ <p>...</p> ] - * desc Selects all paragraphs, finds span elements inside these, and reverts the + * @desc Selects all paragraphs, finds span elements inside these, and reverts the * selection back to the paragraphs. * * @name end @@ -2112,4 +2112,4 @@ jQuery.each( [ "eq", "lt", "gt", "contains" ], function(i,n){ jQuery.fn[ n ] = function(num,fn) { return this.filter( ":" + n + "(" + num + ")", fn ); }; -});
\ No newline at end of file +}); |