Javascript-форум (https://javascript.ru/forum/)
-   Ваши сайты и скрипты (https://javascript.ru/forum/project/)
-   -   SOS, мучаюсь уже 3 день, как добавить класс к body, при появлении меню!! (https://javascript.ru/forum/project/73262-sos-muchayus-uzhe-3-den-kak-dobavit-klass-k-body-pri-poyavlenii-menyu.html)

olegmadeofrusiansever 02.04.2018 13:17

SOS, мучаюсь уже 3 день, как добавить класс к body, при появлении меню!!
 
Нужно это все дело для того, чтобы запретить прокрутку. Дальше этот класс при появлении сделать overflow: hidden в css.

$(".toggle_mnu").click(function() {
if ($(".top_mnu").is(":visible")) {
$("body").removeClass("noscroll");
}
else {
$("body").addClass("noscroll");
};
});

В html это выглядит так:

<button class="toggle_mnu">
<span class="sandwich">
<span class="sw-topper"></span>
<span class="sw-bottom"></span>
<div class="sw-footer">
</span>
</span>
</button>
<nav class="top_mnu">
<ul>
<li><a href="#">Пункт 1</a></li>
<li><a href="#">Пункт 2</a></li>
<li><a href="#">Пункт 3</a></li>
<li><a href="#">Пункт 4</a></li>
<li><a href="#">Пункт 5</a></li>
<li><a href="#">Пункт 6</a></li>
</ul>
</nav>

css
body.noscroll {
overflow: hidden; }

При данном варианте, сначала вроде работает, начинаю но после кликов по <li> начинает глючить, т.е класс .noscroll появляется когда меню не видно и запрет скрола появляется на сайт! Помогите сделать чтобы это работало..

Сайт пилю на коленке в свободное время для работы:lol: , я не профессиональный веб-программист. Поэтому извините за нубский вопрос, реально уже третий день ищу инфу как это реализовать:help: .. пробовал и .addClass и toggleClass, но знаний не хватает.

laimas 02.04.2018 19:22

А кнопка "toggle_mnu" только и занимается классом body или же и меню тоже?

А если управляет и меню, то $("body").toggleClass("noscroll"). Это же переключатель, вы включая/выключая свет дома не задаетесь же вопросом идет или нет ток по проводам.

olegmadeofrusiansever 02.04.2018 21:47

Цитата:

Сообщение от laimas (Сообщение 482121)
А кнопка "toggle_mnu" только и занимается классом body или же и меню тоже?

Она в основном только меню и занимается)) Мне нужно, чтобы при открытии .top_mnu, которое открывается по клику кнопки "toggle_mnu", всегда добавлялся класс к body, и соответственно удалялся при закрытии этого меню. Главная цель всего этого "действия" - запретить скролинг сайта, пока открыто меню (.top_mnu)

laimas 03.04.2018 03:01

Цитата:

Сообщение от olegmadeofrusiansever
Мне нужно, чтобы при открытии .top_mnu, которое открывается по клику кнопки "toggle_mnu", всегда добавлялся класс к body

А я о чем? $("body").toggleClass("noscroll") это и будет делать. А что касается щелчков по пунктам меню, то если это не переход по новому адресу, то добавить LI в обработчик.

olegmadeofrusiansever 04.04.2018 12:10

Цитата:

Сообщение от laimas (Сообщение 482142)
А я о чем? $("body").toggleClass("noscroll") это и будет делать. А что касается щелчков по пунктам меню, то если это не переход по новому адресу, то добавить LI в обработчик.

Спасибо, попробую

olegmadeofrusiansever 05.04.2018 11:52

Цитата:

Сообщение от laimas (Сообщение 482142)
А я о чем? $("body").toggleClass("noscroll") это и будет делать. А что касается щелчков по пунктам меню, то если это не переход по новому адресу, то добавить LI в обработчик.

Спасибо, помогли:thanks:


Часовой пояс GMT +3, время: 05:52.