.offset()。top返回错误的值

时间:2012-09-05 17:37:35

标签: javascript jquery

我有一个奇怪的问题,我不知道如何解决,并想知道你们是否可以提供帮助。

一些背景知识:我被要求创建一个系统,其中wordpress中页面的子页面以无限滚动方式加载到该页面的末尾。这是正常的。

他们还希望顶级导航链接加载所有内容,包括他们点击的页面,然后滚动到它。

如果我向下滚动(加载页面)然后单击顶部导航链接,则滚动可正常工作。但是,如果我在点击其中一个链接之前没有加载任何页面,页面将加载,滚动将开始,但只会在停止之前获得一些。这是由于offset()。top给出的值不正确。我的问题是为什么?

function ajaxloadnscroll(index) {

    //If the page has already been loaded then just scroll to it
    if (pages[index].loaded) {
        $('html, body').animate({
            scrollTop: $("#" + pages[index].name).offset().top
        }, 2000);
        return;
    }

    //Loop through pages up to one clicked.
    for (i = 0; i <= index; i++) {


        current = i;
        if (!pages[current].loaded) {
            $.ajax({
                url: pages[i].url,
                async: false,
                context: document.body,
                success: function(data) {
                    if (data) {
                        $("#tempload").before(data);
                        pages[current].loaded = true;

                        if (current == index) {
                            $('html, body').animate({
                                scrollTop: $("#" + pages[current].name).offset().top
                            }, 2000);
                        }

                    }
                }
            });
        }
    }

    //Increment current in order to load next page object on scroll.
    current++;
    return false;
}​

非常感谢您在这个问题上给我的任何帮助!

0 个答案:

没有答案