Autor | Zpráva | ||
---|---|---|---|
nethor Profil |
#1 · Zasláno: 30. 10. 2020, 10:54:33
Zdravím, v rozsáhlejším projektu Ajaxem podle potřeby zobrazuji různé formuláře. Každý formulář pak používá vlastní obslužné scripty a funkce.
Doposud jsem načítal vždy 2 soubory fce.js a script.js, jejich velikost už jde ale do tisíců řádků a většina jejich obsahu se načítá zbytečně. Upravil jsem to tedy tak, že se fpříslušné scripty a fce načtou až při zobrazení konkrétního formuláře. Funguje to, ale potíž je vtom, když formulář několikrát otevřu / zavřu /otevřu , tak se scripty na jednu akci začnou spouštět několikanásobně. Chápu, proč se to děje (trochu se divím, že nevyskakuje chyba cannot redeclare function), Ale nevím, jak to ošetřit. function RocniUzitek(Input){ var Name = $(Input).attr("name") ; var Value = $(Input).val() ; $.post("Ajax.php?RocniUzitek" , {Name:Name, Value:Value }, function(Result){ $(".RocniUzitek").replaceWith(Result) ; }); } $("body").delegate('.RocniUzitek input', "change", function() { RocniUzitek(this) ; }); |
||
Kajman Profil |
Co zavolat před delegate undelegate na odstranění původních událostí?
Nebo si v globálním objektu pamatovat, pro které formuláře už jsou funkce a události načtené, a načítat je jen, pokud ještě načtené nebyly. |
||
nethor Profil |
#3 · Zasláno: 30. 10. 2020, 11:38:13
Kajman:
Funguje! Děkuju:) Tedy takhle: $("body").undelegate('.RocniUzitek input', "change") ; // Funguje $("body").undelegate('.RocniUzitek') ; // Nefunguje $("body").undelegate('.RocniUzitek input') ; // Nefunguje ..ale bez toho se asi obejdu. |
||
anonym_ Profil * |
#4 · Zasláno: 30. 10. 2020, 20:09:50
nethor:
A co takhle? $(“.RocniUzitek”).undelegate() |
||
nethor Profil |
#5 · Zasláno: 1. 11. 2020, 08:10:03
anonym:
„ $(‘.RocniUzitek”).undelegate() “
To jsem zkoušel, nefunguje. |
||
Časová prodleva: 4 dny
|
|||
_es Profil |
#6 · Zasláno: 5. 11. 2020, 00:20:00
A čo tak len jednoducho pred načítaním skriptu overiť, či už nie je načítaný?
Napríklad, či existuje premenná či funkcia definovaná v skripte. „trochu se divím, že nevyskakuje chyba cannot redeclare function“ Funkcia môže byť definovaná opakovane, platí posledná definícia s rovnakým názvom. |
||
Časová prodleva: 5 dní
|
|||
N71 Profil * |
#7 · Zasláno: 9. 11. 2020, 15:12:24
Berte to možná jako poznámku pod čarou, ale modularizace javascriptových skriptů už byla vynalezena. A podstatně líp. Například pomocí Webpacku. Lazy loading objektů je pak něco, co může fungovat zcela automaticky.
|
||
Časová prodleva: 3 roky
|
0