

HTML seznam ul li - volání metody pouze potomka
Ahoj,
mám nepříjemný problém s probubláváním metod elementů u seznamu v HTML s pomocí jQuery.
Jde mi o tohle:
<li id="child_node_1" >Produkty (všechny)
<ul>
<li>Podprodukty
<ul>
<li onclick="ajaxLoadURL('wasserlacke')">Polozka 1
<ul>
<li>Polozka 2
<ul>
<li> Polozka 3
<ul>
<li onclick="ajaxLoadURL('HENECRYL1K-2K')";>
Polozka 4
</li>
</li>
</ul>
</li>
</ul>
</ul>
</li>
</ul>
</li>
</ul>
</li>
Ve zkratce jde o to, že když kliknu na kteréhokoliv potomka, tak event mi probublává přes rodiče.
Jde mi o to, aby když kliknu na POLOŽKU4, tak aby se provedla jen její funkce (onclick).
Škodí když se provádí i funkce u nadřízené položky 1.
Kdo se s tímto setkal, tak je mu asi jasné co mě vadí.
Podstatné také je, aby se nějak předal parametr metody ajaxLoadURL.
Díky za radu, hledám nějaké elegantní řešení.
Elegantni reseni: event.stopPropagation()
Mrkni na to
To je mi známo.
Našel jsem konkrétně:
$('li').click(function(event) {
if (this === event.target) {
// do your code
}
});
ale nevím, jak dostat do // do your code
parametr onclick funkce. Prostě, abych tam zavolal to:
ajaxLoadURL('HENECRYL1K-2K');
Ak to chceš mať inline v atribúte, tak môžeš použiť premennú event, ktorá je implicitne nastavená: onclick="ajaxLoadURL(event, 'HENECRYL1K-2K')". Následne v ajaxLoadURL zavoláš stopPropagation.
Ak to chceš lepšie, tak namiesto inline JavaScriptu nastavíš všetko deklaratívne a JavaScript následne nainicializuješ. V tom prípade dáš rootu nejaký identifikátor (dajme tomu, že ten child_node_1, ktorý tam už máš) a URL nastavíš do dátových atribútov: <li data-url="HENECRYL1K-2K">. Obsluhu JavaScriptom potom budeš mať na jednom mieste a bude vyzerať zhruba takto:
Kód som písal z hlavy, tak tam môžu byť chyby.
Děkuji za navržená řešení.
Zkoušel jsem obě.
První nefunguje, ale druhé je ještě lepší a funkční.
Toto je ukázkové řešení potíže ve vláknu.
Jste super.