Autor Zpráva
Greeg
Profil
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
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 onclicku:
objekt.onclick = function()
{
  if(vypnuto) return false;
  // dosavadní onclick věci
};

Pokud nemůžeš do existujícího onclicku 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
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
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 :)

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:

0