我有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();
}
});
});但是在这种情况下,在重新加载之后,不会调用页面函数。
是否有任何方法只在滚动页上调用一次函数,而不调用它,但在重新加载页面后调用它?
发布于 2014-03-31 15:09:41
您应该在.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')
}
});https://stackoverflow.com/questions/22765197
复制相似问题