jQuery - 如果div动态移动,如何将页面滚动到div?

时间:2011-08-15 04:15:20

标签: jquery scroll jquery-animate move offset

目前我正在创建一个主要使用PHP,SQL和JS混合的网站。我使用JS使用PHP和SQL动态提取新数据。我遇到的当前问题是我有一个按钮,单击该按钮将使页面基于偏移每2.5秒滚动到当前DIV。问题是元素移动后函数找不到NEW偏移量。

代码段:

...

$(".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的起始位置。提前感谢您的回复。

2 个答案:

答案 0 :(得分:0)

div如何动态移动?有没有导致它移动的事件?如果是,则每次触发此事件时我们都需要设置$to_focus=($(".focus_on_this").offset().top);。仅在单击时设置它将不起作用。

在你提到的按钮上的问题点击页面每隔2.5秒滚动到div,但我没有看到任何这样的代码。如果你想在一段时间之后重新调用任何代码,你应该使用setInterval,如下所示。

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

}, 2000);

答案 1 :(得分: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);