r1965 - trunk/ui
r1965 - trunk/ui
Author: joern.zaefferer
Date: Mon Feb 2 06:02:20 2009
New Revision: 1965
Modified:
trunk/ui/ui.accordion.js
Log:
accordion: use synced animations only when animating two elements; optimize
for only-one
Modified: trunk/ui/ui.accordion.js
==============================================================================
--- trunk/ui/ui.accordion.js (original)
+++ trunk/ui/ui.accordion.js Mon Feb 2 06:02:20 2009
@@ -410,6 +410,10 @@
options.toShow.animate({height: "show"}, options);
return;
}
+ if ( !options.toShow.size() ) {
+ options.toHide.animate({height: "hide"}, options);
+ return;
+ }
var overflow = options.toShow.css('overflow'),
percentDone,
showProps = {},
@@ -417,29 +421,22 @@
fxAttrs = [ "height", "paddingTop", "paddingBottom" ],
originalWidth;
// fix width before calculating height of hidden element
- if (options.toShow[0]) {
- var s = options.toShow;
- originalWidth = s[0].style.width;
- s.width( parseInt(s.parent().width()) - parseInt(s.css("paddingLeft"))
- parseInt(s.css("paddingRight")) - parseInt(s.css("borderLeftWidth")) -
parseInt(s.css("borderRightWidth")) );
- }
+ var s = options.toShow;
+ originalWidth = s[0].style.width;
+ s.width( parseInt(s.parent().width()) - parseInt(s.css("paddingLeft"))
- parseInt(s.css("paddingRight")) - parseInt(s.css("borderLeftWidth")) -
parseInt(s.css("borderRightWidth")) );
+
$.each(fxAttrs, function(i, prop) {
hideProps[prop] = 'hide';
- if (options.toShow[0]) {
- var parts = ('' + $.css(options.toShow[0],
prop)).match(/^([\d+-.]+)(.*)$/);
- showProps[prop] = {
- value: parts[1],
- unit: parts[2] || 'px'
- };
- }
+ var parts = ('' + $.css(options.toShow[0],
prop)).match(/^([\d+-.]+)(.*)$/);
+ showProps[prop] = {
+ value: parts[1],
+ unit: parts[2] || 'px'
+ };
});
options.toShow.css({ height: 0, overflow: 'hidden' }).show();
options.toHide.filter(":hidden").each(options.complete).end().filter(":visible").animate(hideProps,{
step: function(now, settings) {
- // if the collapsible option is set to true, we may not have
- // a content pane to show
- if (!options.toShow[0]) { return; }
-
// only calculate the percent when animating height
// IE gets very inconsistent results when animating elements
// with small values, which is common for padding