Můj DOM vypadá nějak takto:
<li> <li><a class="editEntity>Edit</a></li> <li><a class="deleteEntity>Delete</a></li> </li>
Když použitý klikne na ‚Upravit‘, chci změnit vnější <li>
do <li class="selected>
.
Zkoušel jsem něco takového, ale nefunguje to:
$('li a.editEntity').live('click', function() { $(this).closest('li').closest('li').addClass('selected'); });
Každá pomoc je oceňována.
Odpověď
Přejít o rodič:
$(this).closest('li').parent().closest('li').addClass('selected');
Nefungovalo to, protože closest
začíná aktuálním prvek, a tak pokud jej nazvete na něčem, co odpovídá selektoru, dostanete zpět to samé, s čím jste začali.
Živý příklad
Nebo můžete použít parents
s :eq
volič:
$(this).parents("li:eq(1)").toggleClass("selected");
Všimněte si, že :eq
používá indexy založené na 0, takže :eq(1)
je druhá nadřazený li
.
Živý příklad
Váš citovaný kód HTML je však neplatný (li
nemůže přímo obsahovat li
); Předpokládám, že jste měl na mysli:
<li> <ul> <li><a class="editEntity>Edit</a></li> <li><a class="deleteEntity>Delete</a></li> </ul> </li>
…nebo podobně.