Autor | Zpráva | ||
---|---|---|---|
kujeba Profil |
#1 · Zasláno: 17. 5. 2010, 15:34:58 · Upravil/a: kujeba
Dobrý den,
mám následující problém. Při změně v selectboxu vykreslím pomocí ajaxu obsah stránky. Jenže pokud použiji selectbox vícekrát, začne se mi cyklit i ajax. Při druhém použití selectboxu se "align_galleryphoto.php" spustí dvakrát, při třetím použití čtyřikrát, atd... Pouzivam knihovnu jQuery. JS: if($('.align_galleryphoto').length){ $("#id_gallery").change(function(){ var id_gallery = $('#id_gallery').val(); var id_module = $('#id_module').val(); var userid = $('#userid').val(); var modulePath = $('#modulePath').val(); var activeModulePath = $('#activeModulePath').val(); var language = $('#id_language').val(); var root = $('#root').val(); var webmaker = $('#webmaker').val(); $.post('../ajax/align_galleryphoto.php', {id_gallery: id_gallery, id_module: id_module, userid: userid, modulePath: modulePath, activeModulePath: activeModulePath, language: language, root: root, webmaker: webmaker }, function(data){ if($('#ajax_align_galleryphoto').length){ $('#ajax_align_galleryphoto').remove(); } if($('.newListSelected').length){ $('.newListSelected').remove(); } if($('.tip').length){ $('.tip').remove(); } $('#container').append(data); }); }); } |
||
Kajman_ Profil * |
#2 · Zasláno: 17. 5. 2010, 16:24:49
A v čem voláte tento kód? Jen jednou při načtení stránky?
|
||
__construct Profil |
#3 · Zasláno: 17. 5. 2010, 16:26:46
skús si nastaviť premennú, alebo HTML elementu class aktivny a pri volaní to kontroluj - a ak už je zavolaná vráť FALSE ..
|
||
kujeba Profil |
#4 · Zasláno: 18. 5. 2010, 09:13:00
Kajman:
Jedná se o zobrazení fotek v galerii. Mám x galerií a v každé n fotografií. V selectu s id="id_gallery" si vybírám galerii, jejíž fotky chci zobrazit. Pri prvnim výběru se ajax spustí jednou, při druhém dvakrát, při třetím čtyřikrát, atd... __construct: Díky za radu, to by mohlo zabrat, zkusím a napíšu výsledek... |
||
kujeba Profil |
#5 · Zasláno: 18. 5. 2010, 10:34:46
__construct:
Tak tahle cesta nikam nevede. Já potřebuju, aby se to dalo zavolat znova a znova. Při každé změně hodnoty atributu "select" potřebuju spustit ajax, ktery mi vykresli fotky, patřící do vybrané galerie... |
||
__construct Profil |
#6 · Zasláno: 18. 5. 2010, 10:46:26
kujeba:
Pozri sa .. pri zavolaní funkcie sa skontroluje class aktivny a ak nie je pridá tlačidlu/odkazu (neviem cez čo to spúšťaš) class aktivny a pri dobehnutí XHR (success/error) ten class odstráni .. Toto fungovať musí .. |
||
Chamurappi Profil |
#7 · Zasláno: 18. 5. 2010, 10:51:26
Reaguji na kujebu:
Proč jsi neodpověděl Kajmanovi? Podle symptomů to vypadá, že jsi podcenil přemoudřelost jQuery. Tamní AJAXová funkce bohužel (prasácky) eval uje i <script> y v AJAXem načteném HTML kódu a použitá funkce change přidává zpracování události, místo toho, aby přepisovala existující zpracování. Domnívám se, že zmíněný JS uvádíš i ve výstupu PHP skriptu align_galleryphoto.php — takže při prvním onchange se přidá druhý onchange , který spolu s tím prvním onchange zařídí, že při dalším onchange se přidají další dva onchange atd.
Jestli jsem se netrefil, tak prosím přestaň opakovat, v čem je problém, a dodej odkaz na živou ukázku. Reaguji na __constructa: Špatný přístup. Snažíš se odstranit důsledky místo hledání příčiny. |
||
kujeba Profil |
#8 · Zasláno: 18. 5. 2010, 11:14:01
Reaguji na Chamurappiho:
Ale já mu na jeho otázku Kajman: „A v čem voláte tento kód? Jen jednou při načtení stránky?“ přeci odpověděl? Jinak jste to trefil, to je přesně ten zádrhel, díky za odhalení příčiny, teď již snad problém vyřeším. S jQuery dělam necelý rok, takže jsem stále začátečník a v podstatě při každém zadání, které řeším pomocí jQuery mne něčím překvapí. |
||
_es Profil |
#9 · Zasláno: 18. 5. 2010, 11:26:29
kujeba:
> Ale já mu na jeho otázku > Kajman: > „A v čem voláte tento kód? Jen jednou při načtení stránky?“ > přeci odpověděl? Neodpovedal si na to, kde presne sa ten kód vlastne nachádza. „S jQuery dělam necelý rok“ Na prácu s jQuery je nutné dostatočne ovládať aj syntax JavaScriptu, lebo syntakticky je jQuery len jedna definovaná funkcia. |
||
Chamurappi Profil |
#10 · Zasláno: 18. 5. 2010, 11:31:05
Reaguji na kujebu:
„já mu na jeho otázku přeci odpověděl?“ Neodpověděl jsi, v čem voláš ten kód. Odpověď „v samotné stránce i v kódu, který načítá AJAX“ by vše vysvětlila. Asi by tě i při jejím psaní trklo, v čem bude háček. Příště dávej rovnou odkaz na živou ukázku, abychom nemuseli tipovat. „při každém zadání, které řeším pomocí jQuery mne něčím překvapí“ Kdybys ho nepoužíval, na tenhle problém bys nenarazil. Takhle musíš brát v úvahu nejen anomálie v prohlížečích, ale i anomálie v jQuery. |
||
kujeba Profil |
#11 · Zasláno: 18. 5. 2010, 15:25:35
Reaguji na Chamurappiho:
OT - „Kdybys ho nepoužíval, na tenhle problém bys nenarazil.“ Jasne, kdybych umel strojovej kod, nemusel bych pouzivat skriptovaci jazyky... Jakej javascript framework tedy doporucujes, kdyz je jQuery spatnej? |
||
__construct Profil |
#12 · Zasláno: 18. 5. 2010, 16:05:58
kujeba:
„Jasne, kdybych umel strojovej kod, nemusel bych pouzivat skriptovaci jazyky... Jakej javascript framework tedy doporucujes, kdyz je jQuery spatnej?“ To s tým strojový kódom je nezmysel .. Chamurappi Ti chcel pravdepodobne povedať, že používanie frameworku neodbúrava nutnosť znalosti daného jazyka a rôznych anomálií (nenazýval by som to anomáliami, ale skôr vlastnosťami, ale to je len môj názor) daného frameworku .. Ak si chceš vybrať iný FW tak si pozri tento prehľad .. |
||
Chamurappi Profil |
#13 · Zasláno: 18. 5. 2010, 16:18:29
Reaguji na kujebu:
„kdybych umel strojovej kod, nemusel bych pouzivat skriptovaci jazyky“ Na webu musel. „Jakej javascript framework tedy doporucujes, kdyz je jQuery spatnej?“ Sám obvykle užívám pár vlastních jednoduchých funkcí, které jsou v něčem podobné funkcím z frameworků, ale neschovávám si do nich nečekaná překvapení a netahám je vždy všechny všude jako kouli na noze. Neefektivní nesmysly, jako je vyhledávání všech elementů v celém dokumentu s určitou třídou jen kvůli tomu, abych zjistil, jestli je na stránce fotogalerie, nedělám. |
||
Časová prodleva: 14 let
|
0