##Feedback
The code looks pretty good. The Javascript code waits until the DOM is ready, then caches references to DOM elements in variables before using those variables in the functions later on.
I initially thought some of the CSS could be consolidated (e.g. many common styles under .menu-link
and .menu a
but then I realized that might be tricky with the SCSS...
##Suggestions
###Toggle the display using .toggle()
The .show()
and .hide()
calls can be replaced with a single call to .toggle()
. Also, using the second form of .toggleClass(), the class name toggled can be added/removed depending on whether the menu button is being displayed or not (i.e. if the width is less than the break point). Thus the function changeMenuStyle()
can be reduced to two lines (or one if you move the conditional out of a variable):
function changeMenuStyle() {
var LTBreakpoint = $window.width() < breakpoint;
$menuBtn.toggle(LTBreakpoint).toggleClass('toggled', LTBreakpoint);
}
###Remove closure just to call function The resize callback can simply be the name of the function - i.e.
$window.on('resize',function() {
changeMenuStyle();
});
Can be simplified to:
$window.on('resize', changeMenuStyle);
Though be aware that the event parameter would get passed to the function, which could have adverse affects if the function is expecting other parameters.