Как «сбросить» toggle() в jquery?

(function($) {
    $.fn.clickToggle = function(func1, func2) {
        var funcs = [func1, func2];
        this.data('toggleclicked', 0);
        this.click(function() {
            var data = $(this).data();
            var tc = data.toggleclicked;
            $.proxy(funcs[tc], this)();
            data.toggleclicked = (tc + 1) % 2;
        });
        return this;
    };
}(jQuery));
$(document).ready(function(){
		  $('#touch-menu').clickToggle(function(){$('#mobileMenu').modal('show'); $('#touch-menu').addClass('open')},function(){$('#mobileMenu').modal('hide'); $('#touch-menu').removeClass('open')});
});

Вот пример кода, .clickToggle можно рассматривать как .toggle(). Идея какая. Есть бургер меню, при клике на него "тоглятся" две функции: 1. открывает модальное окно и добавляет класс к бургер меню. 2. закрывает модальное окно и убирает класс с бургер меню.

При нажатии на ссылку меню мы прокручиваемся до таргета, но это меню должно и закрыться сразу же (то есть должна вы полниться функция 2 в том тоггле выше. Делаю я это обычно: если нажали на ссылку, то переезжаем до таргета и закрываем модальное окно + убираем класс open у бургера. НО функция .clickToggle "не знает об этом" и считает что меню бургер по-прежнему открыто, то есть она, при клике будет выполнять функцию 2 (а она уже у нас выполнена), из-за этого чтобы еще раз открыть меню приходится два раза кликать на бургер.

Вопрос такой: можно ли как-то "сказать" что если мы нажали на ссылку, модалка закралась, бургер вернулся в первоначальное положение и .clickToggle начал работать заново?
  • Вопрос задан
  • 244 просмотра
Пригласить эксперта
Ответы на вопрос 1
@devstudent
frontend-developer
пропишите отдельно две функции ваши, которые вы пронумеровали и вызывайте их в нужные моменты, например, при нажатии на бургер, при клике на ссылку .... и вообще где угодно и где надо чтобы произошло прописанное в этих ф-циях
Ответ написан
Ваш ответ на вопрос

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

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