这很可能是重复的,是的,我看过他们here和here。我的问题与第二个问题非常相似。
第二个链接表明要解决这个问题,必须做这样的事情:
function loadMoreResults() {
if (flag) return;
flag = true;
[...]
flag = false;
}
我已尝试在我的实际代码中安装此类逻辑,但无论是否已正确打开和关闭()&}和{},它所做的就是给出语法错误。也许我做错了。
$(document).ready(
function loadAll (param) {
if (param < 0) {
return;
} else if (isNaN(param)) {
param = param.responseText;
} else if (!isNaN(param)) {
}
$.ajax({
url: '../login/functionLogin/functions.php',
type: 'POST',
dataType: 'JSON',
data: {task: "load", next_id: param},
success: function(data) {
next_id = data.next_id;
$.each(results, function(i, attr) {
//Do whatever and return next_id
}
})
}
});
//Since the next_id is within the function, I do not have to make it global.
$(window).scroll(function () { //If user scrolls to bottom, fire anything inside
if ($(window).scrollTop() >= $(document).height() - $(window).height()) {
loadAll(next_id).die(); //Firing twice or even thrice
}
})
});
问题:如何停止当前脚本两次触发?这个脚本的结构好吗? [我觉得设计非常糟糕,导致这个问题的那个]
我可以详细说明。我尽力说出这个问题。
答案 0 :(得分:1)
好像你回答了自己的问题!添加一个变量并检查它是否未定义,然后进行处理,如果已经设置,则不要做任何事情。
$(window).scroll(function () { //If user scrolls to bottom, fire anything inside
if ($(window).scrollTop() >= $(document).height() - $(window).height()) {
if (typeof flag != 'undefined' && flag) return;
loadAll(next_id); // .die(); // what is the die(); ??? //Firing twice or even thrice
flag = true;
}
})