@RobertCody

Почему внутри таймера не срабатывает удаление объекта?

Скрипт выдает результаты поиска при вводе символов с интервалом 350 мс. При каждом срабатывании поиска очищаются предыдущие результаты. Но иногда результаты дублируются, как будто интервал сбрасывается до выполнения функции от предыдущего срабатывания, так же как и стираются результаты.

$("#search").find("[name=search]").on("keyup", function (e) {
     clearTimeout($(this).data('timer')),
     $(this).data('timer', setTimeout(function(){
                    let t = e.target.value;
                    o = '<div class="c-search-results__list">',
                    liveSearch(t).then((e) => {
                        $('.c-search-results').html('');
                        e.products.forEach((p, s) => {
                        /* ...................................... */
                        }),
                        e.products.length ? ($(".c-search-results").html('').addClass("active"), $(o).appendTo($(".c-search-results"))) : $(".c-search-results").removeClass("active");
                        o += '</div>';
                    }).catch((e) => {
                        $(".c-search-results").removeClass("active");
                    });
                    $(this).removeData('timer');
                }, 350));
            });
  • Вопрос задан
  • 80 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы