1

我正在尝试自己制作一种无限滚动。我不使用 Infinite 的原因是我不会在 Wordpress 中使用它。

它正在工作,除了我需要使用 on.() 方法之外,我只是不知道该怎么做。

$(window).scroll(function(){
    if($(window).scrollTop() == $(document).height() - $(window).height()){
        $('.wait-please').show();
        latestTask();
    }
});

function latestTask()
{
    $id = $(".latestTask:last").attr("taskid");
    $.post("/includes/classes/handler.php?do=lastTask", { lastId : $id },
    function(data){
        if(data){
            //alert(data);
            $('.latestTask:last').after(data);
        }
        $('.wait-please').hide();
    });
}

函数 latestTask 调用一个 php 脚本,我在其中回显所有新帖子。问题是它一直调用相同的十个,因为我需要 on.() 方法来绑定新元素。

但是在这种情况下,我将在哪里以及如何使用 On 呢?对于我所看到的,我需要指定一个像点击这样的事件。但我没有点击事件?

检索到的数据结构如下:

echo "<div style='font-size:20px;color:#f90;' class='latestTask' taskid='$row[lookupId]'>$row[lookupId]</div>";

更新

这是滚动时得到的 id 行:

75 74 73 75 74 73 72 71 70 72 71 70 69 68 67 66 65 64 66 65 64 63 62 61 63 62 61 60 57 55 60 57 55 43 40 38 43 40 38 33 229 22

正如你所看到的,数据库调用有一些非常奇怪的结果:72、71、70、72、70。看起来我必须让它无法让用户“双滚动”。但是如何?

4

1 回答 1

2

确保不要两次触发 ajax 请求。

如果没有看到完整的页面,很难理解为什么会发生这种情况。

尝试这个

var fetchingTasks = false;

$(window).scroll(function(){
    if($(window).scrollTop() == $(document).height() - $(window).height()){
        $('.wait-please').show();
        if (!fetchingTasks) {
          fetchingTasks = true;
          latestTask();
        }
    }
});

function latestTask()
{
    $id = $(".latestTask:last").attr("taskid");
    $.post("/includes/classes/handler.php?do=lastTask", { lastId : $id },
    function(data){
        if(data){
            //alert(data);
            $('.latestTask:last').after(data);
        }
        $('.wait-please').hide();
        fetchingTasks = false;
    });
}
于 2012-04-12T12:31:36.643 回答