Autor | Zpráva | ||
---|---|---|---|
baldur Profil * |
#1 · Zasláno: 22. 1. 2011, 00:16:46
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 |
#2 · Zasláno: 22. 1. 2011, 10:42:51 · Upravil/a: NejakyTom
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 |
#3 · Zasláno: 22. 1. 2011, 10:48:05
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 * |
#4 · Zasláno: 22. 1. 2011, 11:15:17
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! |
||
Časová prodleva: 13 let
|
0