Вот мой код;как стрелять window.resize только один раз?
$(window).resize(function() {
if ($(window).width() >= 760) {
$('.sidebar-left').one().css("display", "block")
} else if ($(window).width() <= 760) {
$('.sidebar-left').one().css("display", "none")
}
});
var m = $(".menu");
m.addClass('fa-bars');
m.on('click', function() {
if (m.hasClass('fa-bars')) {
m
.removeClass('fa-bars')
.addClass('fa-times');
$(".sidebar-left").css("display", "block")
} else {
m
.removeClass('fa-times')
.addClass('fa-bars');
$(".sidebar-left").css("display", "none")
}
});
.sidebar-left {
width: 100px;
position: fixed;
background-color: black;
height: 100%;
}
.menu.fa {
display: none;
}
@media handheld,
screen and (max-width: 760px) {
.sidebar-left {
display: none;
width: 100%;
background-color: black;
height: 100px;
}
.menu.fa {
display: inline-block;
font-size: 35px;
color: black;
}
}
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.2/css/font-awesome.min.css" rel="stylesheet" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="menu fa"></div>
<div class="sidebar-left"></div>
И plunk. (здесь может быть легче протестировать)
Так что это просто меню. Проблема заключается в том, что в настоящее время событие resize будет выполняться каждый раз, когда изменяется страница, поэтому, если у меня есть меню, отображаемое под 760 пикселями, оно автоматически исчезнет при изменении размера, если я его открываю.
Если я полностью отменил функцию изменения размера javascript и оставил ее в css, проблема в том, что если я открою и закрою меню в меньшем окне, на дисплее будет установлено значение none, когда я снова закрою окно.
Я пробовал несколько других вещей, но, похоже, не могу придумать способ сделать это. Цель состоит в том, чтобы просто воспроизвести то, что делает функция $ (window) .resize, в настоящее время, но для этого события срабатывает только после того, как окно изменилось за пределы точек.
Надеюсь, что проблема объясняется четко.
Благодаря
, а не, запустив функцию только один раз: не было бы лучше, чтобы запустить функцию, но проверить, если меню открыто? а затем, когда вы закроете меню, запустите код изменения размера? – krisph