javascript - 滚动一次调用函数

标签 javascript jquery

我有 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();
        }
    });

});

但在这种情况下,重新加载后页面函数不会被调用。

有没有办法只在滚动时调用函数一次,并且不再调用它,而是在重新加载页面后调用它?

最佳答案

您应该使用带有 .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')
    }
});

关于javascript - 滚动一次调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22765197/

相关文章:

javascript - 在 contenteditable div 中为 div 启用调整大小

php - Jquery文件上传隐藏IFrame

jquery - Rails - 有什么关于在 jquery 中通过 json 提交表单的好例子吗?

javascript - 如何同步链接 q.nf 调用

电话号码的 Javascript 正则表达式

jQuery - 单击按钮更改 Div 的高度

javascript - $(callback) 和 $(document).ready(function) 之间的区别?

javascript - React组件将视频帧连续绘制到 Canvas : doesn't work on iOS

javascript - 为什么在 `array#reduce` 内部返回一个函数而不是仅仅传递一个函数

javascript - 如何在使用正则表达式对象的 javascript 字符串替换函数中操作 $2 变量?