我有这段代码:
$(window).scroll(function () {
if ($(window).scrollTop() >= $(document).height() - $(window).height() - 10) {
var site_url = $("#site_url").val();
var post_url = site_url+"index.php/ajax/get_more_users";
$("#loading_more_users").show();
var users_page = $("#users_page").val();
//alert("y");
$.post(post_url, {'page': users_page}, function(data){
//alert("x");
$("#loading_more_users").hide();
$("#left_members_collumn").append(data);
$("#users_page").val(eval(Number(users_page)+1));
});
}
});
当我滚动到底部时,任何人都可以告诉我为什么$ .post会被执行一次,两次或三次?我得到了重复的内容。主函数执行正常,但我不知道为什么有多个ajax请求。
谢谢。
答案 0 :(得分:3)
滚动多次触发符合if条件的条件。你可以做些什么来防止这种情况被设置为bool以表明你的帖子,所以你不要发布两次:
var isPosting = false;
$(window).scroll(function () {
if (!isPosting && $(window).scrollTop() >= $(document).height() - $(window).height() - 10) {
isPosting = true;
var site_url = $("#site_url").val();
var post_url = site_url+"index.php/ajax/get_more_users";
$("#loading_more_users").show();
var users_page = $("#users_page").val();
//alert("y");
$.post(post_url, {'page': users_page}, function(data){
//alert("x");
$("#loading_more_users").hide();
$("#left_members_collumn").append(data);
$("#users_page").val(eval(Number(users_page)+1));
isPosting = false;
});
}
});
答案 1 :(得分:2)
每次滚动时,你都会执行ajax请求,因为你将这个函数绑定到$(window).scroll()
函数。如果您的if
返回true,那么您将执行ajax request
。
要逐出它,您可以使用jquery中的函数one
:
$(window).one('scroll', function () {
if ($(window).scrollTop() >= $(document).height() - $(window).height() - 10) {
var site_url = $("#site_url").val();
var post_url = site_url+"index.php/ajax/get_more_users";
$("#loading_more_users").show();
var users_page = $("#users_page").val();
//alert("y");
$.post(post_url, {'page': users_page}, function(data){
//alert("x");
$("#loading_more_users").hide();
$("#left_members_collumn").append(data);
$("#users_page").val(eval(Number(users_page)+1));
});
}
});