Skip to content
Permalink
Browse files

FX Queueing added. Effects no longer mess up causing weird results.

  • Loading branch information
jeresig committed Jun 15, 2006
1 parent 807c75d commit 268c82a903c06ce2711beed6d87ce551fa5356cb
Showing with 77 additions and 19 deletions.
  1. +76 −17 fx/fx.js
  2. +1 −2 jquery/jquery.js
@@ -3,54 +3,108 @@ $.speed = function(s,o) {
o = o || {};
var ss = {"crawl":1200,"xslow":850,"slow":600,"medium":400,"fast":200,"xfast":75,"normal":400};
o.duration = typeof s == "number" ? s : ss[s] || 400;

o.oldComplete = o.onComplete;
o.onComplete = function(){
$.dequeue(this, 'fx');
if ( o.oldComplete && o.oldComplete.constructor == Function ) {
$.apply( this, o.oldComplete );
}
};

return o;
};

$.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 ) {
$.apply( elem, f );
}
}
};

$.fn.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 ) {
$.apply(this,fn);
}
});
};

$.fn._hide = $.fn.hide;

$.fn.hide = function(a,o) {
o = $.speed(a,o);
return a ? this.each(function(){
return a ? this.queue(function(){
new $.fx.FadeSize(this,o).hide();
}) : this._hide();
};

$.fn._show = $.fn.show;

$.fn.show = function(a,o) {
o = $.speed(a,o);
return a ? this.each(function(){
return a ? this.queue(function(){
new $.fx.FadeSize(this,o).show();
}) : this._show();
};

$.fn.slideDown = function(a,o) {
o = $.speed(a,o);
return this.each(function(){
return this.queue(function(){
new $.fx.Resize(this,o).show("height");
});
};

$.fn.slideUp = function(a,o) {
o = $.speed(a,o);
return this.each(function(){
return this.queue(function(){
new $.fx.Resize(this,o).hide("height");
});
};

$.fn.fadeOut = function(a,o) {
o = $.speed(a,o);
return a ? this.each(function(){
return a ? this.queue(function(){
new $.fx.Opacity(this,o,1).hide();
}) : this._hide();
};

$.fn.fadeIn = function(a,o) {
o = $.speed(a,o);
return a ? this.each(function(){
return a ? this.queue(function(){
new $.fx.Opacity(this,o,1).show();
}) : this._show();
};

$.fn.fadeTo = function(a,ev,o) {
o = $.speed(a,o);
return a ? this.each(function(){
return a ? this.queue(function(){
ef = new $.fx.Opacity(this,o);
ef.custom(ef.cur(),parseFloat(ev));
ef.show();
@@ -172,24 +226,29 @@ $.fx = function(el,op,ty){
clearInterval(z.timer);
z.timer = null;

z.now = lastNum;
z.a();

// Reset the overflow
y.overflow = z.oldOverflow;

// If the element is, effectively, hidden - hide it
if( y.height == "0px" || y.width == "0px" ) {
y.display = "none";
}

// If the element was shown, and not using a custom number,
// set its height and width to auto
if ( ty != "opacity" && z.o.auto ) {
$.setAuto( z.el, 'height' );
$.setAuto( z.el, 'width' );
// set its height and/or width to auto
if ( (ty == "height" || ty == "width") && z.o.auto ) {
$.setAuto( z.el, ty );
}

// If a callback was provided, execute it
if( z.o.onComplete.constructor == Function ) {
$.apply( z.el, z.onComplete );

// Yes, this is a weird place for this, but it needs to be executed
// only once per cluster of effects.
// If the element is, effectively, hidden - hide it
if ( y.height == "0px" || y.width == "0px" ) {
y.display = "none";
}

$.apply( z.el, z.o.onComplete );
}
} else {
// Figure out where in the animation we are and set the number
@@ -365,7 +365,7 @@ $.getCSS = function(e,p) {
els.visibility = 'hidden';
els.position = 'absolute';
els.display = '';
oHeight = e.clientHeight - ph || parseInt(e.style.height,10);
oHeight = e.clientHeight || parseInt(e.style.height,10);
oWidth = e.clientWidth || parseInt(e.style.width,10);
els.display = od;
els.position = op;
@@ -398,7 +398,6 @@ $.clean = function(a) {
for ( var i = 0; i < a.length; i++ ) {
if ( a[i].constructor == String ) {
if ( a[i].indexOf("<tr") == 0 ) {
//alert("tr");
var tr = true;
a[i] = "<table>" + a[i] + "</table>";
}

0 comments on commit 268c82a

Please sign in to comment.
You can’t perform that action at this time.