JavaScript - Menú toggle, Cerrar un item al abrir otro

 
Vista:
sin imagen de perfil
Val: 2
Ha aumentado su posición en 51 puestos en JavaScript (en relación al último mes)
Gráfica de JavaScript

Menú toggle, Cerrar un item al abrir otro

Publicado por Álvaro (3 intervenciones) el 27/10/2019 14:19:20
Hola, tengo un sitio con un menú toggle que se activa para dispositivos móviles cuando la resolución es menor de 768 px.

Funciona bien pero quisiera que si se abre un parent se despliegue el <li>(ahora lo hace) pero a la vez que cierre otro parent si estuviera abierto. No sé si me explicado bien.

Si quieres ver como funciona este es el sitio t.ly/9kA6Y

El codigo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
var ww = document.body.clientWidth;
 
$(document).ready(function() {
	$(".nav li a").each(function() {
		if ($(this).next().length > 0) {
			$(this).addClass("parent");
		};
	})
 
	$(".toggleMenu").click(function(e) {
		e.preventDefault();
		$(this).toggleClass("active");
		$(".nav").toggle();
	});
	adjustMenu();
})
 
$(window).bind('resize orientationchange', function() {
	ww = document.body.clientWidth;
	adjustMenu();
});
var adjustMenu = function() {
	if (ww <= 768) {
		$(".toggleMenu").css("display", "inline-block");
		if (!$(".toggleMenu").hasClass("active")) {
			$(".nav").hide();
		} else {
			$(".nav").show();
		}
 
		$(".nav li").unbind('mouseenter mouseleave');
		$(".nav li a.parent").unbind('click').bind('click', function(e)
 
		 {
			// must be attached to anchor element to prevent bubbling
 
			e.preventDefault();
			$(this).parent("li").toggleClass("hover");
 
		});
	}
	else if (ww > 768) {
		$(".toggleMenu").css("display", "none");
		$(".nav").show();
		$(".nav li").removeClass("hover");
		$(".nav li a").unbind('click');
		$(".nav li").unbind('mouseenter mouseleave').bind('mouseenter mouseleave', function() {
		 	// must be attached to li so that mouseleave is not triggered when hover over submenu
		 	$(this).toggleClass('hover');
		});
	}
}


Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder