Autor | Zpráva | ||
---|---|---|---|
snazimse Profil |
#1 · Zasláno: 5. 9. 2014, 03:59:35
Zdravím,
dá se v čistém javascriptu detekovat pouze jeden klik.Abych si to dal do podmínky V jquery to jde snadno pomocí funkce .one(). Ale dá se něco takového použít v čistém JS? Přemyšlím že by se to dalo udělat, možní přes count times,je to dobré řešení? Pak podmínky? Nebo znáte někdo něco lepšího. Bylo by to správně? Díky všem za reakce! |
||
Jan Tvrdík Profil |
snazimse:
var handler; el.addEventListener('click', handler = function() { el.removeEventListener('click', handler); ... }); |
||
Chamurappi Profil |
#3 · Zasláno: 5. 9. 2014, 10:53:04
Reaguji na Jana Tvrdíka:
To je zbytečně užvaněné a nefunguje ve všech prohlížečích (ve starších Explorerech kvůli nepodpoře addEventListener u, v ostatních starších prohlížečích kvůli chybějícímu třetímu argumentu).
Reaguji na snazimse: el.onclick = function() { el.onclick = null; // ... }; |
||
snazimse Profil |
#4 · Zasláno: 5. 9. 2014, 15:43:21
Díky to mi bohatě stačí!
|
||
joe Profil |
#5 · Zasláno: 5. 9. 2014, 16:09:40
Chamurappi:
Tvůj kód bude určitě fungovat, ale co když je plugin, který přiřazuje onclick také? Tak mu ho odstraníš, není lepší způsob přes event listenery (samozřejmě s kompatibilitou pro prohlížeče), protože takhle to může způsobit klidně v budoucnu nějaký problém, ne?
|
||
Chamurappi Profil |
#6 · Zasláno: 6. 9. 2014, 13:24:52
Reaguji na joa:
Stejně tak může v budoucnu způsobit problém, že nebudu moct (třeba všechna) zpracování události odebrat, nebo že některý z listenerů změní stav stornování výchozí akce, nebo že zastaví bublání. Listenery používám jen u objektů, kde nějaká kolize opravdu hrozí (jako je window ) a někdy ani tam ne. Je s tím zbytečné patlání a obecné řešení kolizních situací to stejně není, protože nejsou domyšlené.
„ale co když je plugin“ Nerozumím, co je ve vztahu ke stránce plugin. |
||
joe Profil |
#7 · Zasláno: 7. 9. 2014, 11:25:12
Chamurappi:
Nad odebráním událostí jsem moc nepřemýšlel, buď je to tím, že jsem takový problém ještě neřešil a nebo že si i myslím, že odebírat událost komponentě (netradičním způsobem, mimo ni) není hezké. Komponentou myslím v tomto případě element, se kterým počítá určitý kus kódu. (Sama o sobě by teda měla umožnit zastavit události a znovu je pak přiřadit) Pluginem jsem myslel kódy třetích stran (lightbox, carousel, ...), nikdy nikdo dopředu neví, jaký plugin se v budoucnu do stránky přidá a zjišťovat, kde je problém, (například při globální práci s událostmi) se může celkem protáhnout. |
||
Časová prodleva: 10 let
|
0