gpt4 book ai didi

javascript - 滚动时多次触发停止功能

转载 作者:数据小太阳 更新时间:2023-10-29 05:54:57 25 4
gpt4 key购买 nike

当用户滚动到底部时,以下代码加载下一页。然而,有时它会自己重复——当用户滚动得太快,或者在 AJAX 仍在加载时滚动。

有没有办法防止它多次触发?因此,例如,在调用 AJAX 时无法加载任何内容,或者 AJAX 只能每秒调用一次?

任何帮助都会很棒。

 $(window).scroll(function() {

if( $(window).scrollTop() + $(window).height() == $(document).height()) {

if (firstURL !== null) {

$.get(firstURL, function(html) { // this gets called multiple times on erratic scrolling
firstURL = '';
var q = $(html).find('.post');
l = $(html).filter('div.bottom-nav');
if( l[0].childNodes.length > 0 ){
firstURL = l[0].children[0].getAttribute('href');
} else {
firstURL = null;
}

q.imagesLoaded( function() {
jQuery(".content").append(q).masonry( 'appended', q, true );
});
});
}
}
});

最佳答案

只需添加一个标志:

var ready = true; //Assign the flag here

$(window).scroll(function() {
//Check the flag here. Check it first, it's better performance wise.
if(ready && $(window).scrollTop() + $(window).height() == $(document).height()) {
ready = false; //Set the flag here

if (firstURL !== null) {

$.get(firstURL, function(html) { // this gets called multiple times on erratic scrolling

firstURL = '';
var q = $(html).find('.post');
l = $(html).filter('div.bottom-nav');
if( l[0].childNodes.length > 0 ){
firstURL = l[0].children[0].getAttribute('href');
} else {
firstURL = null;
}

q.imagesLoaded( function() {
jQuery(".content").append(q).masonry( 'appended', q, true );
});
}).always(function(){
ready = true; //Reset the flag here
});
}
}
});

关于javascript - 滚动时多次触发停止功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23156102/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com