I'm making a submenu with jQuery.
I've got it working on screen sizes over 700 pixels wide, but when the viewport goes lower than that and again resize it bigger, the submenu goes and breaks (still works on the width under 700 pixels though).
So basically it seems like the script does not know how to return the responsive submenu back to normal after visiting the lower resolution. What am I doing wrong here?
Resolved with the line: el2.off();
jQuery
jQuery(function( $ ){
$(document).ready(function(){
/*
* @name: setDimensions
* @author: *******
* @versio: 0.1
* @description: Vigila el tamaño de la pantalla
* @date: 2016/04/04
*
* @param: none
* @return: none
*/
delay = 250,
throttled = false,
calls = 0;
function setDimensions(){
responsiveMenu();
};
// window.resize event listener
window.addEventListener('resize', function() {
// only run if we're not throttled
if (!throttled) {
// actual callback action
setDimensions();
// we're throttled!
throttled = true;
// set a timeout to un-throttle
setTimeout(function() {
throttled = false;
}, delay);
}
});
setDimensions();
/*
* @name: responsiveMenu
* @author: *****
* @versio: 0.1
* @description:
* @date: 2016/04/04
*
* @param: none
* @return: none
*/
function responsiveMenu(){
var el = $("#menu_principal");
var el2 = $(".levelFather");
if (window.matchMedia("(max-width: 700px)").matches) {
if(!el.hasClass("responsive-menu")){
el.addClass("responsive-menu").before('<div class="responsive-menu-icon"></div>');
$(".responsive-menu-icon").click(function(){
$("#menu_principal").toggleClass("openMenu");
});
}
if(!el2.hasClass("responsive-submenu")){
el2.addClass("responsive-submenu");
el2.click(function(){
$(this).toggleClass("open");
});
}
}else{
if(el.hasClass("responsive-menu")){
el.removeClass("responsive-menu");
if(el.hasClass("openMenu")){el.removeClass("openMenu");}
el.prev().remove();
}
if(el2.hasClass("responsive-submenu")){
el2.off(); <----
el2.removeClass("responsive-submenu");
if(el2.hasClass("open")){el2.removeClass("open");}
}
$("#menu_principal").removeAttr("style");
}
}
}); //End $(document).ready
}); //End jQuery function
Fiddle