mirror of
https://github.com/jquery/jquery-ui.git
synced 2024-11-21 11:04:24 +00:00
Effects: Fixed queueing of class animations. Fixes #6748 - animateClass broken in 1.8.7.
This commit is contained in:
parent
b475ae74df
commit
cba92afe25
68
ui/jquery.effects.core.js
vendored
68
ui/jquery.effects.core.js
vendored
@ -231,43 +231,41 @@ $.effects.animateClass = function(value, duration, easing, callback) {
|
|||||||
easing = null;
|
easing = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
return this.each(function() {
|
return this.queue('fx', function() {
|
||||||
$.queue(this, 'fx', function() {
|
var that = $(this),
|
||||||
var that = $(this),
|
originalStyleAttr = that.attr('style') || ' ',
|
||||||
originalStyleAttr = that.attr('style') || ' ',
|
originalStyle = filterStyles(getElementStyles.call(this)),
|
||||||
originalStyle = filterStyles(getElementStyles.call(this)),
|
newStyle,
|
||||||
newStyle,
|
className = that.attr('className');
|
||||||
className = that.attr('className');
|
|
||||||
|
|
||||||
$.each(classAnimationActions, function(i, action) {
|
$.each(classAnimationActions, function(i, action) {
|
||||||
if (value[action]) {
|
if (value[action]) {
|
||||||
that[action + 'Class'](value[action]);
|
that[action + 'Class'](value[action]);
|
||||||
}
|
}
|
||||||
});
|
|
||||||
newStyle = filterStyles(getElementStyles.call(this));
|
|
||||||
that.attr('className', className);
|
|
||||||
|
|
||||||
that.animate(styleDifference(originalStyle, newStyle), duration, easing, function() {
|
|
||||||
$.each(classAnimationActions, function(i, action) {
|
|
||||||
if (value[action]) { that[action + 'Class'](value[action]); }
|
|
||||||
});
|
|
||||||
// work around bug in IE by clearing the cssText before setting it
|
|
||||||
if (typeof that.attr('style') == 'object') {
|
|
||||||
that.attr('style').cssText = '';
|
|
||||||
that.attr('style').cssText = originalStyleAttr;
|
|
||||||
} else {
|
|
||||||
that.attr('style', originalStyleAttr);
|
|
||||||
}
|
|
||||||
if (callback) { callback.apply(this, arguments); }
|
|
||||||
});
|
|
||||||
|
|
||||||
// $.animate adds a function to the end of the queue
|
|
||||||
// but we want it at the front
|
|
||||||
var queue = $.queue(this),
|
|
||||||
anim = queue.splice(queue.length - 1, 1)[0];
|
|
||||||
queue.splice(1, 0, anim);
|
|
||||||
$.dequeue(this);
|
|
||||||
});
|
});
|
||||||
|
newStyle = filterStyles(getElementStyles.call(this));
|
||||||
|
that.attr('className', className);
|
||||||
|
|
||||||
|
that.animate(styleDifference(originalStyle, newStyle), duration, easing, function() {
|
||||||
|
$.each(classAnimationActions, function(i, action) {
|
||||||
|
if (value[action]) { that[action + 'Class'](value[action]); }
|
||||||
|
});
|
||||||
|
// work around bug in IE by clearing the cssText before setting it
|
||||||
|
if (typeof that.attr('style') == 'object') {
|
||||||
|
that.attr('style').cssText = '';
|
||||||
|
that.attr('style').cssText = originalStyleAttr;
|
||||||
|
} else {
|
||||||
|
that.attr('style', originalStyleAttr);
|
||||||
|
}
|
||||||
|
if (callback) { callback.apply(this, arguments); }
|
||||||
|
});
|
||||||
|
|
||||||
|
// $.animate adds a function to the end of the queue
|
||||||
|
// but we want it at the front
|
||||||
|
var queue = $.queue(this),
|
||||||
|
anim = queue.splice(queue.length - 1, 1)[0];
|
||||||
|
queue.splice(1, 0, anim);
|
||||||
|
$.dequeue(this);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user