Tengo un menú de hamburguesas de varios niveles. Codepen, trató de hacerlo similar, pero sin fuentes e íconos
Ahora se pueden abrir muchos submenús y subsubmenús. El propietario solicitó activar solo uno: un elemento secundario y un elemento secundario secundario dentro.
El guión original es simple (sí, los más cercanos y los hermanos no funcionaron).
jQuery('ul#burger-menu span.fa-open').on('click', function() { jQuery(this).toggleClass('rotate'); jQuery(this).parent('li').children('ul.sub-menu').slideToggle(); });Al hacer clic en la flecha, gira, el elemento actual se abre y se cierra con un clic (debido a la alternancia, como tiene que ser).
Si necesito abrir solo uno, debería alternar la clase 'd-block' solo para el elemento activo y eliminarlo para otros. Lo intento de esa manera, y cuando abro el elemento, todos los demás se cierran, como tiene que ser, pero no puedo alternar el elemento abierto en sí. Solo se puede cerrar si abro otro elemento. Traté de dar una nueva clase a todos los elementos abiertos y hacer que el término eliminara las clases agregadas si fa-open está en línea con esta nueva clase.
¿Cómo arreglar todo eso?
jQuery('ul#burger-menu>li>span.fa-open').on('click',function() { jQuery('ul#burger-menu>li>span.fa-open').removeClass('rotate'); jQuery(this).toggleClass('rotate'); jQuery('ul.sub').removeClass('d-block'); jQuery(this).parent('li').children('ul.sub').toggleClass('d-block'); /* jQuery('ul#burger-menu>li').removeClass('opened-burger-item'); jQuery(this).parent('li').addClass('opened-burger-item'); */ }); jQuery('ul#burger-menu li>ul.sub>li>span.fa-open').on('click',function() { jQuery('ul#burger-menu li>ul.sub>li>span.fa-open').removeClass('rotate'); jQuery(this).toggleClass('rotate'); jQuery('ul.subsub').removeClass('d-block'); jQuery(this).parent('li').children('ul.subsub').toggleClass('d-block'); /* jQuery('ul#burger-menu>li').removeClass('opened-burger-item'); jQuery(this).parent('li').addClass('opened-burger-item'); */ });El elemento abierto tiene que cerrar a otros y tiene que alternar con un clic, no entiendo por qué entran en conflicto.