0

关于这篇文章

有没有办法确定在 jQuery 上执行操作之前进行的滚动次数?目前,我想要发生的不是单击事件,而是滚动事件将在第 n 个滚动时触发(例如,第三个滚动事件)。有没有办法做到这一点?

谢谢!

4

4 回答 4

0

希望这就是你的意思..

var i = 0;

$( window ).scroll(function() {
  i++;
  alert(i);
  if(i == 3){
        //Your code
  }

});

于 2013-10-07T09:41:12.647 回答
0

我在链接的帖子中分叉了 jsfiddle

http://jsfiddle.net/Mw9B6/8/

if(count > 50){
    conditionMet = true;
}

滚动 50 次或单击按钮时满足条件,如前所述,可以/应该使用 800 毫秒超时。

那应该回答你的问题。

于 2013-10-07T10:30:16.543 回答
0
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 个滚动事件,这应该更准确地满足您的需要。

希望有帮助。

于 2013-10-07T09:54:27.313 回答
0
    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();
});

http://jsfiddle.net/3kPaB/11/

这将防止用户在不滚动 50 次的情况下滚动到 500px 以下。您可以将此与 Gal V 提供的 800 毫秒超时相结合,因为很容易达到 50 次。

于 2013-10-07T10:02:34.247 回答