Я пытаюсь создать веб-сайт, поэтому всякий раз, когда вы нажимаете на кнопку с id="slider-toggle"
открывается меню. Он отлично работает при загрузке страницы в первый раз.
Проблема возникает при изменении размера окна. Всякий раз, когда вы изменяете размер окна и затем нажимаете кнопку, консольный журнал говорит "откройте его, закройте". тогда как он должен только сказать "открыть его" или "закрыть".
Затем всякий раз, когда вы продолжаете изменять размер окна, а затем нажимаете на кнопку, он имеет что-то вроде "откройте его, закройте его, откройте, закройте, откройте, закройте и так далее".
Насколько мне известно, что-то не так с jQuery resize().
Или может кто-нибудь увидеть какой-либо недостаток в моем коде?
var container = $('#container');
var menu = $('#desktop-menu');
function myswipemenu(){
//toggle function
function toggleSwipeMenu(){
if(container.hasClass("open")){
console.log("close it");
}
else {
console.log("open it");
}
}
$('#slider-toggle').click(toggleSwipeMenu);
}
function callback () {
windowsize = $(window).width();
menu.removeClass('slidermenu');
container.removeClass('thecontent');
menu.insertAfter($(".header-main"));
if (windowsize < 1160) {
menu.addClass('slidermenu');
container.addClass('thecontent');
myswipemenu();
}
else {
menu.removeClass('slidermenu');
container.removeClass('thecontent');
}
}
$(window).ready(callback);
$(window).on('resize', callback);
Вы вызываете функцию ниже в событии изменения размера.
myswipemenu()
И события снова и снова становятся связующим звеном.
Удалите вызов этой функции в событии изменения размера, которое не будет вызвано снова и снова. Если вы изменяете размер при перетаскивании окна, эта функция будет вызываться несколько раз и перегрузит браузер.