Задать вопрос
@vintalis

Как удалять класс в любом месте при скролле?

Помогите пожалуйста, есть у меня input с классом search , застилизовал его и при нажатии на него добавляется класс active,
Код
$(document).on('click', '.search-button', function () {
$(this).parent().parent().toggleClass('active');
});

А теперь например человек открыл по середине поиск и забыл его закрыть, как сделать что б при скролле в низ например на пару пикселей, этот класс убирался.
Вот пробовал это, но это явно не то
код
$(window).scroll(function(){
$('.search-holder').removeClass('active', $(this).scrollTop() > 0);
});
  • Вопрос задан
  • 70 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
  • Академия Эдюсон
    Fullstack-разработчик на JavaScript + ИИ
    11 месяцев
    Далее
  • ProductStar × РБК
    Профессия: Инженер по тестированию + ИИ
    6 месяцев
    Далее
Решения вопроса 1
@vintalis Автор вопроса
Сделал вот так
$(window).scroll(function() {
var height = $(window).scrollTop();
/*Если сделали скролл на 100px удаляем класс */
if(height > 100){
$('.class').removeClass('active');
}
});
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
fomenkogregory
@fomenkogregory
Юниор софтварный инженер
Добавь на скролл ивент, но без всяких проверок. просто юзер начинает скролинг убираешь класс.
Или если хочешь при значительном скролле убирать, получаешь значение window.scrollTop до начала ивента и сравниваешь по ходу ивента.
Типо так
const start = window.scrollTop
window.addEventListener('scroll', () => {
  if (Math.abs(window.scrollTop - start) > 100) {
    // Убираешь класс
  }
}
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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