Autor Zpráva
Petík
Profil *
Ahoj,
nevím jak problém přesně popsat, zkusím vysvětlit na příkladu
mám následující HTML:
<ul class="nav">
				<li><a href="tab-noze">Nože</a></li>
					<ul class = "child">
					         <li><a class ="" href="tabch-neco">Nějký nože</a></li>
					</ul>
				<li><a href="tab-sekery">Sekery</a></li>
</ul>


a chtěl bych aby při kliknutí na odkaz nože bylo zkontrolováno zda má pod sebou nějakou další strukturu. Pokud ano tak preventDefault a zobrazit ten seznam. Při dalším kliknutím na něj by ho to mohlo zavřít, ale to už je nadstavba s kterou bych si pohrál. V jQuery jsem zkoušel něco jako:
$('.child').hide();
$('.nav li a').click(function(e){
  	if($(this).parent('.nav:first').children('.child:first')[0])
	{
  		e.preventDefault();
		$(this).parent('ul:first').children('ul:first').show();
	}
});


přiznávám že ta konstrukce s parnet a children je divná a vůbec né košér :D na ní to určitě stojí. Prosím poraďte někdo jak vybrat ten správný prvek a i jak do toho zakomponovat toggle ?. Za odpovědi předem moc díky.

Petr Klimeš
Chamurappi
Profil
Reaguji na Petíka:
Předpokládám, že uvedený skript ani nefunguje správně ve všech prohlížečích. Zopakoval bych si HTML.
Petík
Profil *
Kupodivu to prohlížeče docela sežrali ;-). Ale chápu ul má být uzavřenej v předcházejícím li
<ul class="nav">
                <li><a href="tab-noze">Nože</a>
                    <ul class = "child">
                             <li><a class ="" href="tabch-neco">Nějaký nože</a></li>
                    </ul>
                </li>
                <li><a href="tab-sekery">Sekery</a>
                </li>
</ul>


díky za upozornění. Problém s JS ale přetrvává.
Petík
Profil *
heureka ...
  $('.child').hide();
  $('.nav li a').click(function(e){	
    if($(this).parents('li:first').find('.child')[0])
	{
	  	e.preventDefault();
		$(this).parents('li:first').find('.child').toggle();
	}
  });


snad to někomu někdy helfne ;-) .... GL&HF
Chamurappi
Profil
Reaguji na Petíka:
Kupodivu to prohlížeče docela sežrali ;-)
Ale každý jinak. V části prohlížečů bylo <ul class="child"> uvnitř <li>.

GL&HF
지지 노 리
Nejsi na chatu, piš česky.

Připadá mi to zbytečně složité, když to srovnám s onclick="this.parentNode.className = this.parentNode.className ? '' : 'zabaleno'" (nebo s toggleClass v jQueryjštině) a trochou CSS.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: