Witam, mam menu w postaci jak poniżej:
<http://december.com/html/4/element/ul.html> <http://december.com/html/4/element/li.html><http://december.com/html/4/element/a.html>txt 1</http://december.com/html/4/element/a.html></http://december.com/html/4/element/li.html> <http://december.com/html/4/element/li.html class="menu-item-has-children"> <http://december.com/html/4/element/a.html>posiada podmenu</http://december.com/html/4/element/a.html> <http://december.com/html/4/element/ul.html class="sub-menu"> <http://december.com/html/4/element/li.html><http://december.com/html/4/element/a.html>txt 1</http://december.com/html/4/element/a.html></http://december.com/html/4/element/li.html> <http://december.com/html/4/element/li.html class="menu-item-has-children"> <http://december.com/html/4/element/a.html>posiada podmenu</http://december.com/html/4/element/a.html> <http://december.com/html/4/element/ul.html class="sub-menu"> <http://december.com/html/4/element/li.html><http://december.com/html/4/element/a.html>txt 1</http://december.com/html/4/element/a.html></http://december.com/html/4/element/li.html> <http://december.com/html/4/element/li.html><http://december.com/html/4/element/a.html>txt 2</http://december.com/html/4/element/a.html></http://december.com/html/4/element/li.html> <http://december.com/html/4/element/li.html><http://december.com/html/4/element/a.html>txt 3</http://december.com/html/4/element/a.html></http://december.com/html/4/element/li.html> </http://december.com/html/4/element/ul.html> </http://december.com/html/4/element/li.html> <http://december.com/html/4/element/li.html><http://december.com/html/4/element/a.html>txt 3</http://december.com/html/4/element/a.html></http://december.com/html/4/element/li.html> </http://december.com/html/4/element/ul.html> </http://december.com/html/4/element/li.html> <http://december.com/html/4/element/li.html><http://december.com/html/4/element/a.html href="">txt 3</http://december.com/html/4/element/a.html></http://december.com/html/4/element/li.html> <http://december.com/html/4/element/li.html class="menu-item-has-children"> <http://december.com/html/4/element/a.html>posiada podmenu</http://december.com/html/4/element/a.html> <http://december.com/html/4/element/ul.html class="sub-menu"> <http://december.com/html/4/element/li.html><http://december.com/html/4/element/a.html>txt 1</http://december.com/html/4/element/a.html></http://december.com/html/4/element/li.html> <http://december.com/html/4/element/li.html><http://december.com/html/4/element/a.html>txt 2</http://december.com/html/4/element/a.html></http://december.com/html/4/element/li.html> <http://december.com/html/4/element/li.html><http://december.com/html/4/element/a.html>txt 3</http://december.com/html/4/element/a.html></http://december.com/html/4/element/li.html> </http://december.com/html/4/element/ul.html> </http://december.com/html/4/element/li.html> </http://december.com/html/4/element/ul.html>
var $ = jQuery; $(function() { $( ".menu-item-has-children a" ).click(function() { $( ".sub-menu", this ).next().toggle(200); }); });
a { padding:20px; display:block; background-color:silver; width:100px; cursor: pointer; text-align: center; } li { margin: 15px 0; padding: 15px; background-color: grey; display: block; width:140px; } .sub-menu { display: none; }
Po prostu
$(this).next()
nie mogę na <li> dlatego, że mam menu wielopoziomowe. i ponowne kliknięcie w element o klasie .menu-item-has-child powoduje zwinięcie tego co przed chwilą rozwinąłem. Dlatego musiałem się ograniczyć do <a> który swym zasięgiem nie obejmuje kolejnych .sub-menu. Nie wiem czy dobrze wytłumaczyłem...
Jeśli któryś element <li> na najwyższym poziomie ma klasę .menu-item-has-children, to kliknięcie w niego powoduje rozwinięcie .submenu, które znajduje się w nim. I teraz, jeśli w tym submenu kolejny element <li> ma klasę .menu-item-has-children to chciałbym móc je rozwinąć, niestety klikając w niego klikam jednocześnie w cały <li> nadrzędny z pierwszego poziomu, co skutkuje owszem rozwinięciem tego co chce, ale jednocześnie zwijam element nadrzędny...
https://codepen.io/siutek/pen/EEWLRr
https://jsfiddle.net/0p7wm7s2/
@trueblue usunąłeś linka <a>posiada podmenu</a>, a ja niestety nie mogę tak zrobić, gdyż wykonuję te wszystkie operacje na menu wygenerowanym przez wordpressa, w którym A będzie zawsze (bez większej rzeźby), bez względu na to czy ma podmenu czy nie.
https://jsfiddle.net/0p7wm7s2/7/
lub
https://jsfiddle.net/0p7wm7s2/9/
Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)