編集:
このリグレッションは jQuery 1.8.1 で修正されました - fiddle。
お気づきのとおり、これは v1.8.0 の別のバグです。
このフィドルは、のアニメーションのpaddingBottom
最後で が単純に減算されることを示しています。slideUp
微妙なpaddingBottom
減算はフィドルには表示されません。これはslideDown
、コールバック内で呼び出すと、paddingBottom
が即座に (減算された方法と対称的に) 追加されるためです。フィドル
修正がリリースされるまで待ちたくなく、1.7.2 にダウングレードしたくない場合、1.7.2 のように動作させるための一時的な回避策は、CSS プロパティ マップを に渡すこと.animate
です。
function next() {
var q = $(this).parents('li');
q.data('originalDimensions', {
borderTopWidth: q.css('borderTopWidth'),
paddingTop: q.css('paddingTop'),
height: q.css('height'),
paddingBottom: q.css('paddingBottom'),
borderBottomWidth: q.css('borderBottomWidth')
});
q.animate({ borderTopWidth:0, paddingTop:0, height:0, paddingBottom:0, borderBottomWidth:0 }, 5000, function(){
$(this).animate($(this).data('originalDimensions'), 5000);
});
}
フィドル
チケットに投票して、1.8.1 リリースで修正されることを祈りましょう。
editoriginalDimensions
: を要素のに格納するための回避策を更新しました.data()
。これにより、後で別のスコープで使用できます。一度に複数の要素をアニメーション化するには、.each
反復を使用して を設定します.data()
。
q.each(function() {
var $this = $(this);
$this.data('originalDimensions', {
borderTopWidth: $this.css('borderTopWidth'),
//...
});
});
q.animate({ borderTopWidth:0, /*...*/ }, 5000, function() {
$(this).animate($(this).data('originalDimensions'), 5000);
});
フィドル