我在PHP中有一个函数advSearch
。当有人滚动到页面底部时,我必须调用该函数。但是当我滚动到页面底部时,advSearch()
会自动调用两次。
$(document).ready(function() {
var txt = 1;
$(window).scroll(function() {
if ($(window).scrollTop() >= ($(document).height() - $(window).height())) {
$('#loadmore_tab01').css('display','block');
setTimeout(function(){
$.post("advSearch",{txt:txt},function(result){
if (result) {
$('#loadmore_tab01').css('display','none');
if (result != 0) {
var count = JSON.parse(result).length;
var oldcount = $('#tabs01').attr('data-count');
var newcount = parseInt(oldcount)+count;
$('#tabs01').children('.clear').remove();
generateHTML_vertical(JSON.parse(result),parseInt(oldcount));
$('#tabs01').attr('data-count',newcount);
}
}
});
},9000);
}
});
});
答案 0 :(得分:0)
SetTimeout不会做我认为你在这里尝试的事情 - 它只会延迟运行它 - 所以当多次调用时,它会等待并多次调用。
要限制或去抖动,您可以尝试http://underscorejs.org/
中的_.throttle
和_.debounce
功能
答案 1 :(得分:0)
使用标志变量之类的
var executed = false;
var txt = 1;
$(window).scroll(function() {
($(window).scrollTop() >= ($(document).height() - $(window).height())) {
$('#loadmore_tab01').css('display','block');
setTimeout(function(){
if(!executed){
$.post("advSearch",{txt:txt},function(result){
executed = true;
if (result) {
$('#loadmore_tab01').css('display','none');
if (result != 0) {
var count = JSON.parse(result).length;
var oldcount = $('#tabs01').attr('data-count');
var newcount = parseInt(oldcount)+count;
$('#tabs01').children('.clear').remove();
generateHTML_vertical(JSON.parse(result),parseInt(oldcount));
$('#tabs01').attr('data-count',newcount);
}
}
});
}
},9000);
}
});
var executed = false;
var txt = 1;
$(window).scroll(function() {
($(window).scrollTop() >= ($(document).height() - $(window).height())) {
$('#loadmore_tab01').css('display','block');
setTimeout(function(){
if(!executed){
$.post("advSearch",{txt:txt},function(result){
executed = true;
if (result) {
$('#loadmore_tab01').css('display','none');
if (result != 0) {
var count = JSON.parse(result).length;
var oldcount = $('#tabs01').attr('data-count');
var newcount = parseInt(oldcount)+count;
$('#tabs01').children('.clear').remove();
generateHTML_vertical(JSON.parse(result),parseInt(oldcount));
$('#tabs01').attr('data-count',newcount);
}
}
});
}
},9000);
}
});