},
queue: function(type, fn){
- if ( jQuery.isFunction(type) || ( type && type.constructor == Array )) {
+ if ( jQuery.isFunction(type) || jQuery.isArray(type) ) {
fn = type;
type = "fx";
}
- if ( !type || (typeof type == "string" && !fn) )
+ if ( !type || (typeof type === "string" && !fn) )
return queue( this[0], type );
return this.each(function(){
- if ( fn.constructor == Array )
+ if ( jQuery.isArray(fn) )
queue(this, type, fn);
else {
queue(this, type).push( fn );
jQuery.extend({
speed: function(speed, easing, fn) {
- var opt = speed && speed.constructor == Object ? speed : {
+ var opt = typeof speed === "object" ? speed : {
complete: fn || !fn && easing ||
jQuery.isFunction( speed ) && speed,
duration: speed,
- easing: fn && easing || easing && easing.constructor != Function && easing
+ easing: fn && easing || easing && !jQuery.isFunction(easing) && easing
};
- opt.duration = (opt.duration && opt.duration.constructor == Number ?
- opt.duration :
- jQuery.fx.speeds[opt.duration]) || jQuery.fx.speeds._default;
+ opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ? opt.duration :
+ jQuery.fx.speeds[opt.duration] || jQuery.fx.speeds._default;
// Queueing
opt.old = opt.complete;
this.unit = unit || this.unit || "px";
this.now = this.start;
this.pos = this.state = 0;
- this.update();
var self = this;
function t(gotoEnd){
jQuery.timers.push(t);
- if ( jQuery.timerId == null ) {
+ if ( t() && jQuery.timerId == null ) {
jQuery.timerId = setInterval(function(){
var timers = jQuery.timers;
step: function(gotoEnd){
var t = now();
- if ( gotoEnd || t > this.options.duration + this.startTime ) {
+ if ( gotoEnd || t >= this.options.duration + this.startTime ) {
this.now = this.end;
this.pos = this.state = 1;
this.update();