Autor | Zpráva | ||
---|---|---|---|
Greeg Profil |
#1 · Zasláno: 23. 7. 2010, 12:21:12 · Upravil/a: Greeg
som v situácii keď mám nejaky HTML element naviazaných (bind) niekoľko napr. click eventov a teraz ich potrebujem dočasne zrušiť, aby sa ten element správal asi ako button s atributom disabled. unbind síce zruší ich spúštanie, ale keď ich chcem potom znovu naviazať k elementu tak som v slepej uličke lebo neviem aké eventy a v akom poradí naň boli naviazané. ďaší nápad bol dať do zoznamu spúšťaných eventov na prve miesto event.stopPropagation(), ale podla guglu to vyzerá tak, že sa s tým poradím veľmi hýbať nedá.
moja otázka teda je: či (a keď tak ako) sa dá dočasne pozastaviť spúštanie eventov nad nejakým elementom. vďaka. |
||
Chamurappi Profil |
#2 · Zasláno: 23. 7. 2010, 12:38:00
Reaguji na Greega:
Zní to docela triviálně. Prostě si zaveď proměnnou, třeba vypnuto , a testuj její stav na začátku svého onclick u:
objekt.onclick = function() { if(vypnuto) return false; // dosavadní onclick věci }; Pokud nemůžeš do existujícího onclick u zasahovat:
var původníOnclick = objekt.onclick; objekt.onclick = function() { if(vypnuto || !původníOnclick) return false; return původníOnclick.apply(this, arguments); }; Ty to ale předpokládám řešíš nějak krkolomněji a ošklivěji, patrně s frameworkem zabodnutým v zádech v domnění, že to tak je snazší. „keď ich chcem potom znovu naviazať k elementu tak som v slepej uličke lebo neviem aké eventy a v akom poradí naň boli naviazané“ Můžeš si je naházet do pole, využívat normálně normální proměnné a struktury… |
||
_es Profil |
#3 · Zasláno: 23. 7. 2010, 12:40:10
Greeg:
Najjednoduchšie je asi na to použiť jednu alebo viacero funkcií a jeden nadradený element pre všetky tie elementy: function zachytávačOnclicku(e){/* nejaké príkazy */} nadradenýElement.onclick = zachytávačOnclicku; // Zachytávanie udalosti onclick zapnuté nadradenýElement.onclick = void 0; // Zachytávanie udalosti onclick vypnuté nadradenýElement.onclick = zachytávačOnclicku; // Zachytávanie udalosti onclick opäť zapnuté |
||
Greeg Profil |
#4 · Zasláno: 23. 7. 2010, 12:51:16
Chamurappi:
jj framework (jQuery), ale ten je tam kvôli pluginom a práve tie sa navezujú na elementy. _es: heh, vyuzit bubbling na taku pascu mi nenapadlo, diki :) |
||
Časová prodleva: 15 let
|
0