MasterGerold
@MasterGerold

Как спрятать bootstrap menu при клике?

Доброго времени суток! На сайте bootstrap меню, оно работает по якорям. Я хочу что бы при нажатии на ссылку оно соответственно перебрасывало на нужную часть страницы и пряталось. Я пробовал убрать класс in с помощью js но тогда оно не корректно переходит. Вот js который отвечает за плавный переход:
$("#menu").on("click","a", function (event) {
    event.preventDefault();
    var id  = $(this).attr('href'),
        top = $(id).offset().top;
    $('body,html').animate({scrollTop: top}, 600);
    // $('#bs-example-navbar-collapse-1').removeClass('in'); Вот этот класс у меня стоял которым я убирал класс in
});

Возможно мне кажется что как то скрипт не очень правильно измерят положение. Я в js не силен. Подскажите как будет правильно сделать.
Заранее благодарен!
  • Вопрос задан
  • 570 просмотров
Пригласить эксперта
Ответы на вопрос 1
bubandos
@bubandos
bash'у, javascript'ую, php'лю, css'аю, html'каю
так как полного кода нет... попробуем полечить по фотографии.

var $scrollTo; // для передачи данных между функциями сохраняем до какого объекта будем скроллить

$("#menu").on("click","a", function (event) {
    event.preventDefault();
    $scrollTo= $($(this).attr('href'));
    $("#menu").collapse(); // сворачиваем меню тут координаты могут поменяться во время сворачивания
});

$('#menu').on('hidden.bs.collapse', function () { // обработчик события уже после того, как меню свернулось
    var top = $scrollTo.offset().top; // получили куда скроллить не в объектах, а в пикселях
    $('body,html').animate({scrollTop: top}, 600);
});
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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