Javascript 一次调用函数
我有jQuery函数Javascript 一次调用函数,javascript,jquery,Javascript,Jquery,我有jQuery函数计数器,我需要在滚动页面时调用它 $(document).ready(function () { $.fn.counter = function () { $(this).each(function () { var num = $(this).data('counter'); var i = 1, self = $(this).html(i);
计数器
,我需要在滚动页面时调用它
$(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();
}
});
});
但是在这种情况下,在重新加载之后,不会调用page函数
有没有办法在scroll上只调用一次函数,不要再调用它,而是在重新加载页面后调用它?您应该使用带有
.on/.off
的名称空间:
$(window).on('scroll.custom', function () {
var height = $(window).scrollTop();
if (height > 300) {
$('.counter-1, .counter-2, .counter-3, .counter-4').counter();
$(window).off('scroll.custom')
}
});
您应该使用带有
.on/.off
的名称空间:
$(window).on('scroll.custom', function () {
var height = $(window).scrollTop();
if (height > 300) {
$('.counter-1, .counter-2, .counter-3, .counter-4').counter();
$(window).off('scroll.custom')
}
});
是的,我已经试过这样的东西了。但是为什么要使用
scroll.custom
,而不仅仅是scroll
?@truslivii.lev,因为我不知道您是否还有其他窗口。scroll
事件。这只是一种安全措施,因为如果没有名称空间,您将删除窗口上的所有滚动事件。顺便说一句,您的小提琴不工作,因为您没有滚动条(因此无法真正触发滚动事件或使滚动高于300):但我将使用我的脚本不在小提琴上;)是的,我已经试过这样的东西了。但是为什么要使用scroll.custom
,而不仅仅是scroll
?@truslivii.lev,因为我不知道您是否还有其他窗口。scroll
事件。这只是一种安全措施,因为如果没有名称空间,您将删除窗口上的所有滚动事件。顺便说一句,您的小提琴不工作,因为您没有滚动条(因此无法真正触发滚动事件或使滚动高于300):但我将使用我的脚本不在小提琴上;)