我想使用 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/