aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJörn Zaefferer <joern.zaefferer@gmail.com>2009-02-02 14:02:20 +0000
committerJörn Zaefferer <joern.zaefferer@gmail.com>2009-02-02 14:02:20 +0000
commitbf16dc1853dca7961947158a1d3be430362386eb (patch)
tree9432d40564bb1bb5a3b2e718727c9a1763473bab
parent7ed45e68de02df14b72d536aa719a442ed116dfa (diff)
downloadjquery-ui-bf16dc1853dca7961947158a1d3be430362386eb.tar.gz
jquery-ui-bf16dc1853dca7961947158a1d3be430362386eb.zip
accordion: use synced animations only when animating two elements; optimize for only-one
-rw-r--r--ui/ui.accordion.js29
1 files changed, 13 insertions, 16 deletions
diff --git a/ui/ui.accordion.js b/ui/ui.accordion.js
index de0ef00fd..30aad692c 100644
--- a/ui/ui.accordion.js
+++ b/ui/ui.accordion.js
@@ -410,6 +410,10 @@ $.extend($.ui.accordion, {
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 @@ $.extend($.ui.accordion, {
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