Jquery 触发按钮单击滚动会触发多次单击

Jquery 触发按钮单击滚动会触发多次单击,jquery,scroll,Jquery,Scroll,我试图在滚动条点击div时触发按钮click on scroll。下面是我尝试过的代码,但当滚动条点击div时,它会触发多次点击并加载下一组数据。有人能建议我如何触发点击一次吗 提前感谢您的帮助:) 注意:单击按钮时,会进行ajax调用,加载下一组数据 问题是每次向下滚动1px时,都会运行$(窗口)。滚动 因此,假设windowScrTp>(divTop+divHeight wHeight)等于200>(168),这意味着您的单击功能将被触发两次 我建议您创建一个变量load,如下面的示例所示,

我试图在滚动条点击div时触发按钮click on scroll。下面是我尝试过的代码,但当滚动条点击div时,它会触发多次点击并加载下一组数据。有人能建议我如何触发点击一次吗

提前感谢您的帮助:)


注意:单击按钮时,会进行ajax调用,加载下一组数据

问题是每次向下滚动1px时,都会运行
$(窗口)。滚动

因此,假设
windowScrTp>(divTop+divHeight wHeight)
等于
200>(168)
,这意味着您的单击功能将被触发两次

我建议您创建一个变量
load
,如下面的示例所示,这将阻止它多次加载

var load = true;
$(window).scroll(function() {
    var divTop = $('.hit-scroll').offset().top,
    divHeight = $('.hit-scroll').outerHeight(),
    wHeight = $(window).height(),
    windowScrTp = $(this).scrollTop();
    if (windowScrTp > (divTop+divHeight-wHeight)){
        if(load){
          load = false;
          $('body').find('.show-more button').trigger('click');
        }
    }
});
在ajax成功调用中,我将添加
load=true

我制作了一个演示,展示了下面的想法

演示

var-load=true;
$(窗口)。滚动(函数(){
var windowScrTp=$(this.scrollTop();
如果(windowScrTp>(200)){
如果(加载){
日志(“加载启动”)
负载=假;
$('body').find('show more button').trigger('click');
}
}
});
$('.ShowMore按钮')。单击(函数(){
设置超时(
函数(){
控制台日志(“加载停止”)
负载=真;
}, 2000);
});
正文{
高度:2000px;
}


更多的问题是,每次向下滚动1px,都会运行
$(窗口)。滚动

因此,假设
windowScrTp>(divTop+divHeight wHeight)
等于
200>(168)
,这意味着您的单击功能将被触发两次

我建议您创建一个变量
load
,如下面的示例所示,这将阻止它多次加载

var load = true;
$(window).scroll(function() {
    var divTop = $('.hit-scroll').offset().top,
    divHeight = $('.hit-scroll').outerHeight(),
    wHeight = $(window).height(),
    windowScrTp = $(this).scrollTop();
    if (windowScrTp > (divTop+divHeight-wHeight)){
        if(load){
          load = false;
          $('body').find('.show-more button').trigger('click');
        }
    }
});
在ajax成功调用中,我将添加
load=true

我制作了一个演示,展示了下面的想法

演示

var-load=true;
$(窗口)。滚动(函数(){
var windowScrTp=$(this.scrollTop();
如果(windowScrTp>(200)){
如果(加载){
日志(“加载启动”)
负载=假;
$('body').find('show more button').trigger('click');
}
}
});
$('.ShowMore按钮')。单击(函数(){
设置超时(
函数(){
控制台日志(“加载停止”)
负载=真;
}, 2000);
});
正文{
高度:2000px;
}


更多
我发现这个解决方案更精确,效果更好

function bindScroll(){
var divTop = $('.hit-scroll').offset().top,
divHeight = $('.hit-scroll').outerHeight(),
wHeight = $(window).height(),
windowScrTp = $(this).scrollTop();
if (windowScrTp > (divTop+divHeight-wHeight)){
       $(window).unbind('scroll');
       $('body').find('.show-more button').trigger('click');
}
}


$(窗口)。滚动(bindScroll)

我发现这个解决方案更精确,效果也更好

function bindScroll(){
var divTop = $('.hit-scroll').offset().top,
divHeight = $('.hit-scroll').outerHeight(),
wHeight = $(window).height(),
windowScrTp = $(this).scrollTop();
if (windowScrTp > (divTop+divHeight-wHeight)){
       $(window).unbind('scroll');
       $('body').find('.show-more button').trigger('click');
}
}


$(窗口)。滚动(bindScroll)

谢谢@Carsten Løvbo Andersen,我无法编辑ajax调用代码,因为它来自第三方。谢谢@Carsten Løvbo Andersen,我无法编辑ajax调用代码,因为它来自第三方。还有别的办法吗。