В отношении этой должности.
Есть ли способ определить количество свитков, выполненных перед выполнением действия в jQuery? В настоящее время то, что я хочу сделать, вместо события click, событие прокрутки будет запускаться на n-ом числе прокрутки (скажем, в третьем событии прокрутки). Есть ли способ сделать это?
Благодарю!
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);
});
обратите внимание, что событие прокрутки запускается на КАЖДОЙ прокрутке, meaning- на "одиночной" прокрутке, выполняемой мышью или трекпадом, вы, вероятно, будете запускать MULTIPLE scroll events, что я не уверен в вашем случае.
iv'e добавил таймер, который позволит 1 прокручивать событие каждые 800 миллисекунд, что должно быть более точным для ваших нужд.
надеюсь, это поможет.
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();
});
Это предотвратит переход пользователя ниже 500px без прокрутки в 50 раз. Вы можете комбинировать это с таймаутом 800 миллисекунд, предоставленным Gal V, так как 50 раз достигается очень легко.
Я разветкил jsfiddle в связанном сообщении
if(count > 50){
conditionMet = true;
}
Условие выполняется при прокрутке 50 раз или при нажатии кнопки, и, как говорилось ранее, можно использовать/использовать тайм-аут в 800 миллисекунд.
Это должно ответить на ваш вопрос.
Надеюсь, это то, что вы имели в виду.
var i = 0;
$( window ).scroll(function() {
i++;
alert(i);
if(i == 3){
//Your code
}
});