Autor Zpráva
baldur
Profil *
Zdravím,
v jQuery mám událost click, která se provádí pro určité elementy, některé z nich jsou ale vnořené do jiných, pro které to také platí - jednoduše například tato struktura:
<div class="trida">
  <div class="trida">
  </div>
</div


A moje jQuery událost by v tomhle případě vypadala:

$(".trida").click(function() { alert("kliknul jsi"); });


No a problém je v tom, že když kliknu myší na místě, kde se tyto elementy překrývají, tak se událost spustí dvakrát, tzn. 2x se mi zobrazí hláška "Kliknul jsi" A já bych potřeboval aby se spustila jenom jednou pro ten element, který je nejvíc nahoře.

Předem Díky!
NejakyTom
Profil
Butto prejmenovat tridy :) a nebo pouzit jinou tridu pro jQuery.
Samozrejme ze se da zaptat ze se ma najit div .trida ktery obsahuje vnoreny div .trida.

Ale podle me je lehci upravit html kod. Pridame dalsi "class" primo a jenom pro jQuery, alternativne muzes pouzit atribut ID.
<div class="trida tidaprokliknuti">
  <div class="trida">
  </div>
</div>


Potom uz je vse jasne a funkcni.
$("div.tidaprokliknuti").click(function(){ 
  alert("kliknul jsi"); 
});
ah01
Profil
baldur:
Události probublávají, proto se ti vyvolá ve vnitřním divu i v jeho rodiči. Stačí zrušit probublávání – http://api.jquery.com/event.stopPropagation/

$(".trida").click(function(e) {
  e.stopPropagation();
  alert("kliknul jsi"); 
});
baldur
Profil *
NejakyTom: Problém je v tom, že já přesně nevím které objekty budou na tuhle událost reagovat a kolik jich bude vnořených v sobě apod. tohle byl jenom příklad. Ale díky za tip!

ah01: Úžasný, už to funguje, nečekal jsem že to bude tak snadný :) Díky!

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: