7

このフィドルでは、ボタンの 1 つをクリックすると、コンテナがゆっくりと上にスライドします。一番上に来ると、完全にスライドしていないことがわかります。インスペクターを見ると、の下部のパディングは、操作li中に予想されるように縮小していません。slideUp()

理由はありますか?

注: 問題をよりよく表示するために、スライドアップは非常に遅いです。

注 2: jQuery ライブラリを 1.7.2 に変更すると、実際には正しく動作します。面白い。

FWIW: jQueryでチケットを提出しました

4

1 に答える 1

2

編集:

このリグレッションは 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);
});

フィドル

于 2012-08-29T05:48:30.213 に答える