Autor | Zpráva | ||
---|---|---|---|
SteveO Profil * |
#1 · Zasláno: 24. 5. 2012, 12:20:11
Zdravím, včera jsem si udělal jQuery plugin pro modální okno, něco jako má pinterest.com, všechno funguje, ale všiml jsem si zajímavé věci.
Zkrátka - klepnu na odkaz, zobrazí se okno. Kliknu na zavřít, zavře se okno. Klepnu znova, otevře se okno, ale po kliknutí na zavřít už se funkce, která okno zavírá, provede dvakrát. Po další klepnutí třikrát, atd. Zkrátka jako by se při každým otevření okna vytvořila nová instance pluginu se všemi funkcemi. Přiřazení akce: $("odkaz").click(function() { $("div s oknem").okenko(); }); A plugin: (function($){ $.fn.okenko = function(moznosti){ var vychozi = { escZavreni: true, priOtevreni: function() {}, priZavreni: function() {} }; var moznosti = $.extend(vychozi, moznosti); var zavritOkno = function(okno) { vychozi["priZavreni"].call(); ..... }); }); } return this.each(function() { alert("A"); vychozi["priOtevreni"].call(); var okno = $(this); ..... $("#okno-prekryti, .zavrit-okno").live("click", function() { alert("B"); zavritOkno(okno); }); }); }; })(jQuery); Po kliku na prvek, ke kterému je otevření okna přiřazeno, se alert "A" vyhodí vždycky jen jednou, což je správně, ale alert "B" vyskočí v tom počtu, po kolikáté už okno zavírám. Prosím o radu, díky. |
||
_es Profil |
#2 · Zasláno: 24. 5. 2012, 13:40:34
SteveO:
„ale alert "B" vyskočí v tom počtu, po kolikáté už okno zavírám.“ ...toľkokrát, koľkokrát sú spustené príkazy v 33 riadku. Okrem toho je lepšie definovať udalosti normálne na elementoch, na ktorých vznikajú, alebo využiť „prebublávanie“ udalostí a nie jQuery metódu live - je neefektívna.
|
||
SteveO Profil * |
#3 · Zasláno: 24. 5. 2012, 13:50:31
Můžeš prosím uvést příklad? :)
|
||
_es Profil |
#4 · Zasláno: 24. 5. 2012, 14:02:45
SteveO:
Príklad čoho? Veď si niekde nájdi, akými rôznymi spôsobmi sa priraďujú ovládače udalostí, či už s alebo bez jQuery. |
||
Časová prodleva: 12 let
|
0