I'm using .toggle()
on a button
element:
$("header button").click(function(event){
$(".site-nav-wrapper").toggle();
event.preventDefault();
});
This works great. The problem is if the button
is toggled to display:none
and then I change the device orientation, triggering my desktop media query, despite the fact I re-force display:block;
on the desktop media query, the button
remains toggled to display:none
:
(Sass):
.site-nav-wrapper{
//Mobile First
display:none;
@include breakpoint($breakpoint-lg) {
display:block;
}
}
Is there a way to reset whatever the toggle()
function is storing?
toggle
uses inline styling, which overrides whatever you're doing in your stylesheet.
To get the desired result, you should use a special hidden
class to hide the element, and use toggleClass
instead.
SASS:
.site-nav-wrapper.hidden {
display: none;
@include breakpoint($breakpoint-lg) {
display: block;
}
}
JS:
$("header button").click(function(event){
$(".site-nav-wrapper").toggleClass('hidden');
event.preventDefault();
});
If I remember correctly toggle
sets the display
property to none
on the element's style
attribute. If you want to force the button to display in the "desktop" orientation then you'll need to include an !important
declaration in your desktop breakpoint.
Alternately, you can listen for onorientationchanged
and switch to the desktop version of the site then (un-toggling / activating everything that needs to be activated).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With