2012-07-02 65 views
1

我有以下jQuery代码。SlideToggle Div动画

$(function() { 
    $('.clickme').click(function() { 
     $('.totalthing').slideToggle('slow','easeInOutQuart', function() { 
      // Animation complete. 
     }); 
     $('.expandedcase').slideToggle('slow','easeInOutQuart', function() { 
      // Animation complete. 
     }); 
    }); 
}); 

目前它关闭其中一个div并同时打开另一个div。我想要它做的就是关闭打开的div,然后一旦完全关闭,就会打开另一个。

+0

看到这个[http://jsfiddle.net/gwLcD/27/](http://jsfiddle.net/gwLcD/27/) –

+0

为什么离开相关HTML出了你的问题? – Sparky

回答

1

尝试:

$(function() { 
    $('.clickme').click(function() { 
     var tot = $('.totalthing'); 
     var exp = $('.expandedcase'); 

     var frt = (tot.is(":visible"))?tot:exp; 
     var lst = (tot.is(":visible"))?exp:tot; 

     frt.stop().slideToggle('slow','easeInOutQuart', function() { 
      lst.stop().slideToggle('slow','easeInOutQuart', function() {/*complete*/}); 
     }); 
    }); 
}); 
+0

非常感谢,我也有另一个问题。它首次运行,但是当它显示.totalthing div时会减速停止,然后跳转到最后显示25px左右。你认为这是由于填充或边际,我似乎无法弄清楚为什么会发生。 –

1

您的意见应该指向正确的方向。如果您希望一个动画完成后启动一个动画,请将其移至该功能。

$(function() { 
$('.clickme').click(function() { 
$('.totalthing').slideToggle('slow','easeInOutQuart', function() { 
    // Animation complete. 
    $('.expandedcase').slideToggle('slow','easeInOutQuart', function() { 
     // Animation complete. 
    }); 
}); 

}); 
}); 
+0

有没有办法做到这一点,所以它会扭转下一次点击的顺序?还是我必须为此创建第二个函数? –

+0

您可以添加和删除类来指示状态,只需打开/关闭它们。 –