0
我有jQuery函数counter
,我需要调用它,当我滚动页面调用函数一次
$(document).ready(function() {
$.fn.counter = function() {
$(this).each(function() {
var num = $(this).data('counter');
var i = 1,
self = $(this).html(i);
var interval = setInterval(function() {
self.html(++i);
if (i >= num) {
clearInterval(interval);
}
}, 100);
});
};
$(window).scroll(function() {
var height = $(window).scrollTop();
if(height > 300) {
$('.counter-1, .counter-2, .counter-3, .counter-4').counter();
}
});
});
问题是,当我再次滚动向上或向下翻页功能,每一次又一次打来电话,再次。
我试图用这个代码
$(document).ready(function() {
$.fn.counter = function() {
$(this).each(function() {
var num = $(this).data('counter');
var i = 1,
self = $(this).html(i);
var interval = setInterval(function() {
self.html(++i);
if (i >= num) {
clearInterval(interval);
}
}, 100);
});
};
$(window).one('scroll', function() {
var height = $(window).scrollTop();
if (height > 300) {
$('.counter-1, .counter-2, .counter-3, .counter-4').counter();
}
});
});
但在这种情况下,重新加载页面功能不叫了。
有没有办法在滚动上只调用一次函数,不要再调用它,而是在重新加载页面后调用它?
是的,我已经尝试过像成才这样http://jsfiddle.net/u6pah/2/。但为什么你使用'scroll.custom',而不是'scroll'? –
@ truslivii.lev,因为我不知道你是否有其他'window.scroll'事件。这只是一个安全因为没有名字空间,你会删除窗口上的每个滚动事件。 –
顺便说一句,你的小提琴不工作,因为你没有滚动条(所以不能真正触发滚动事件或滚动高于300):http://jsfiddle.net/u6pah/3/ –