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