关于这篇文章。
有没有办法确定在 jQuery 上执行操作之前进行的滚动次数?目前,我想要发生的不是单击事件,而是滚动事件将在第 n 个滚动时触发(例如,第三个滚动事件)。有没有办法做到这一点?
谢谢!
希望这就是你的意思..
var i = 0;
$( window ).scroll(function() {
i++;
alert(i);
if(i == 3){
//Your code
}
});
我在链接的帖子中分叉了 jsfiddle
if(count > 50){
conditionMet = true;
}
滚动 50 次或单击按钮时满足条件,如前所述,可以/应该使用 800 毫秒超时。
那应该回答你的问题。
var scrolled = 0, can_count = true;
$(window).scroll(function(){
if (!can_count) return false;
can_count = false;
scrolled++;
// if (scrolled == 3) {...}
setTimeout(function(){ can_count = true; }, 800);
});
请注意,每次滚动都会触发滚动事件,这意味着-在鼠标或触控板执行的“单个”滚动上,您可能会触发 MULTIPLE 滚动事件,我不确定这是否适合您的情况。
我添加了一个计时器,每 800 毫秒允许 1 个滚动事件,这应该更准确地满足您的需要。
希望有帮助。
var count = 0;
var prev_scroll = 0;
var success = 1;
$(window).scroll(function() {
if(count >= 50){
alert("you did 50 down scrolls");
count = 0;
success = 0;
}
if(success == 1 && $(window).scrollTop() > 500)
{
$(window).scrollTop(500);
count++;
}
if(success == 0 && $(window).scrollTop() == 0)
{
/*reset success*/
success = 1;
}
prev_scroll = $(window).scrollTop();
});
这将防止用户在不滚动 50 次的情况下滚动到 500px 以下。您可以将此与 Gal V 提供的 800 毫秒超时相结合,因为很容易达到 50 次。