@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);
});
  • Вопрос задан
  • 64 просмотра
Решения вопроса 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) {
    // Убираешь класс
  }
}
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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