| 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: 6 let
|
|||
0