2011-08-15 287 views
1

目前我正在創建一個主要使用PHP,SQL和JS混合的網站。我使用JS使用PHP和SQL動態提取新數據。目前我遇到的問題是,我有一個按鈕,點擊時會使頁面根據偏移每2.5秒滾動到當前的DIV。問題是這個函數在元素移動後沒有找到NEW偏移量。jQuery - 如果div動態移動如何滾動頁面到div?

代碼片段:

...

$(".button").click(function() { 
      $message_focus = "TRUE"; 
      $to_focus=($(".focus_on_this").offset().top); 
     }); 

...

if ($message_focus = "TRUE") { 
     $("html, body").animate({ scrollTop: ($to_focus) },{ queue:false, duration:750 }); 
    } 

...

這就是主要問題是。這一切都可以正常工作,儘管它只能進入最初div的起始位置。預先感謝您的回覆。

+0

說:「將有頁面滾動到當前DIV每2.5秒基於偏移您還沒有表現出你的代碼」。你需要爲此設置'setInterval'。你能顯示你使用的代碼嗎?這個問題可能在這個片段中。 –

回答

0

你必須重新計算.focus_on_this的位置每次您滾動頁面:

var $message_focus = false; 

$(".button").click(function() { 
    $message_focus = true; 
}); 

setInterval(function() { 
    if ($message_focus == true) { 
     $("html, body").animate({ 
      scrollTop: $(".focus_on_this").offset().top 
     },{ 
      queue:false, 
      duration:750 
     }); 
    } 
}, 2500); 
0

div如何動態移動?是否有任何事件導致它移動?如果是,那麼每次觸發此事件時都需要設置$to_focus=($(".focus_on_this").offset().top);。僅在點擊時設置它不起作用。

在你提到的關於按鈕的問題中,每隔2.5秒滾動一次div,但是我沒有看到任何這樣的代碼。如果您想在如下所示的特定時間段之後重複地調用任何代碼,則應該使用setInterval。

setInterval(function(){ 
    //Do something after every 2000 milliseconds 

}, 2000);