2013-04-18 34 views
1

我試圖做到以下幾點:激活2個jQuery函數有一個鏈接

  • 打開一個div 的slideToggle
  • 移動用戶窗口的div頂部scrollTop的
  • 然後基本上扭轉用戶關閉div時的過程。

我把整個過程接近完成,但我有一個問題。當我打開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一個例子:Here

+0

我認爲你的while條件應該是(object = object.offsetParent) – Andbdrew

+0

這是假設在那裏。它確保增加所有周邊div的高度。 –

+0

當你說「那麼基本上在用戶關閉div時逆轉過程」,你想要發生什麼'scrollTop'?返回窗口頂部?讓它回到按鈕位置? – Dom

回答

5

你需要改變滑動功能:

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

http://jsfiddle.net/hSHz5/

+0

謝謝修復它! -Chris –

+0

不錯的修復,非常酷! – FluxEngine