1

私は次のことをしようとしています:

  • slideToggleで div を開く
  • scrollTopを使用して、ユーザー ウィンドウを div の先頭に移動します。
  • 次に、ユーザーがdivを閉じると、基本的にプロセスが逆になります。

プロセス全体がほぼ完了しましたが、1 つ問題があります。div を開くと、ウィンドウが div の一番上に移動しません。しかし、div を閉じると、ウィンドウが必要な場所に移動します。

ここに私のjQueryコードがあります:

// Find the location of a div (x, y)
function divLoc(object) {
var topCord = 0;

// If browser supports offsetParent
if(object.offsetParent) {
    do {
        topCord += object.offsetHeight;
    } 
    while (object === object.offsetParent);

    return topCord;
}
}

$("#open").click(function () {
    var newInfo = document.getElementById("newInfo");
    var location = divLoc(newInfo);
    $("#newInfo").slideToggle('slow', function() {
        $('html,body').animate({ scrollTop: location }, 2000);
    });
});

そして、jsFiddle に問題の例をアップロードしました

4

1 に答える 1

5

スライド機能を変更する必要があります:

$("#newInfo").slideToggle('slow', function() {
  var self = $(this)       
  $('html,body').animate({ scrollTop: self.offset().top }, 2000);
});

http://jsfiddle.net/hSHz5/

于 2013-04-18T20:48:48.043 に答える