您可以使用 animateAuto 插件http://jsfiddle.net/basarat/jaxpd/7/来做到这一点:
jQuery.fn.animateAuto = function(prop, speed, callback){
var elem, height, width;
return this.each(function(i, el){
el = jQuery(el), elem = el.clone().css({"height":"auto","width":"auto"}).appendTo("body");
height = elem.css("height"),
width = elem.css("width"),
elem.remove();
if(prop === "height")
el.animate({"height":height}, speed, callback);
else if(prop === "width")
el.animate({"width":width}, speed, callback);
else if(prop === "both")
el.animate({"width":width,"height":height}, speed, callback);
});
}
$('#LoginButton').toggle(
function () {
$(this).stop().animateAuto('width',600);
$("#profile").delay(100).toggle(300);
},
function () {
$(this).stop().animate({
width: '20px'
})
$("#profile").delay(100).toggle(300);
});
更新要使用 jquery 1.9 及更高版本,切换功能的行为发生了一些变化:http: //jquery.com/upgrade-guide/1.9/#toggle-function-function-removed所以要与那些你需要迁移插件的人一起使用它。使用 jQuery 1.9 进行示例并迁移 1.1:http: //jsfiddle.net/basarat/jaxpd/18/