jquery - 内容添加了两次,但只循环一次

标签 jquery ajax json2html

我想使用 AJAX 向我的提要添加更多内容,它确实添加了内容 - 但它添加了两次。为了排除诸如 AJAX 请求提交两次之类的原因,我添加了整数 i。但如果我向下滚动,i 仅等于 1(如我的 h1 元素所述)。

AJAX success 函数接收一个 json 对象(我可以在警报中看到),然后将其转换为 html 两次(相同的对象,因此也是相同的 html)。您知道为什么会出现此问题吗?

jQuery:

function loadMore()
{
    var i = 0;
    var accountpar = $(".parent").length;

    $.ajax({
        url: 'homemore.php',
        type: 'post',
        data: {
            'account':accountpar
        },
        success: function(datanew) {
            i++;
            var datarec = datanew.replace(/},]$/,"}]");
            var string  = json2html.transform(datarec,template);
            alert(string);
            $(string).insertAfter($('.parent').last());
        }
    });
    $(window).bind('scroll', bindScroll);
}

function bindScroll(){
    if($(window).scrollTop() + $(window).height() > $(document).height() - 100) {
        $(window).unbind('scroll');
        loadMore();
    }
}

$(window).scroll(bindScroll);

最佳答案

我会尝试这样的事情。我的感觉告诉我,它“按像素”捕获并多次发射。您可以下载 debounce/throttle 插件并使用它,并将其设置为 250 之类,或者尝试这种“一次方法”

如果使用去抖(必须下载插件)

我重新阅读了您的帖子(在您更新后),并且您绑定(bind)了两次: 一旦像这样:

$(window).scroll(bindScroll);

再次像这样:

$(window).bind('scroll', bindScroll);

我觉得这是一个危险信号。重新阅读后,我可能要么只是下载插件并将其包装在去抖中($(window).scroll(bindScroll);)。

<小时/>
$.debounce( 250, bindScroll ) 

而不是这个:

 $(window).bind('scroll', bindScroll);

试试这个:

$( window ).one( "scroll", function() {
     bindScroll()
});

关于jquery - 内容添加了两次,但只循环一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36370183/

相关文章:

jquery - 未使用具有指定类的 jquery 创建 div

javascript - 将特定的 XML 节点拉入 HTML 文档

javascript - 主线程上的 XMLHttpRequest 已弃用

javascript - 使用 jQuery 在 Ajax 结果中查找节点

javascript - 如何使用 jQuery 的 json2html 将文件内的文本渲染到另一个 html 页面中?

javascript - 使用 json2html 渲染 anchor href

Jquery 文件上传以编程方式删除文件

javascript - 美元符号和美元符号后跟 JQuery 中的句点有什么区别?

javascript - 如何在json2html库中使用li标签

javascript - 如何限制用户在日期选择器jquery mobile中仅选择两天前的日期以及当前日期