@MaximalParadise

Как остановить выполнение этого скрипта jquery?

Здравствуйте! Не могу понять, как остановить выполнение скрипта после скролла. То есть, юзер скроллит, скрипт запускается и запуститься вновь, при новом скролле без обновления страницы. Нужно, чтобы анимация после первого просмотра (скролла) остановила свое выполнение.
Спасибо.

<script>
$(function() {
    var num = $(".number");
    num.each(function(indx, el) {
        var max = $(el).data("max");
        var duration = 5000;
        var visibility = checkViewport(el);
        $(el).on("animeNum", function() {
            $({n: 0}).animate({n: max}, {
                easing: "linear",
                duration: duration,
                step: function(now, fx) {
                    $(el).html(now | 0)
                }
            })
        }).data("visibility", visibility);
        visibility && $(el).trigger("animeNum")
    });

    function checkViewport(el) {
    var H = document.documentElement.clientHeight,
        h = el.scrollHeight,
        pos = el.getBoundingClientRect();
        return pos.top + h > 0 && pos.bottom - h < H
    }
    $(window).scroll(function() {
        num.each(function(indx, el) {
            var visibility = checkViewport(el);
            el = $(el);
            var old = el.data("visibility");
            old != visibility && el.data("visibility", visibility) && !old && el.trigger("animeNum")
        })
    })
});
</script>
  • Вопрос задан
  • 288 просмотров
Решения вопроса 1
webinar
@webinar
Учим yii: https://youtu.be/-WRMlGHLgRg
Записываете в переменную или в localStorage флаг(тупо единицу например) при запуске. Предварительно проверяете нет ли там уже единицы.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
iiiBird
@iiiBird Куратор тега HTML
Пока ты спишь - твой конкурент совершенствуется
самый простой вариант. создать где то в общей видимости переменную к примеру.
var funcDone = false;
потом в самой функции задать ей true;
и уже в $(window).scroll(function() {
проверять переменную.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы