Autor | Zpráva | ||
---|---|---|---|
Pacl Profil |
#1 · Zasláno: 27. 8. 2013, 12:21:00
Dobrý den,
mám např. stranka.php, která obsahuje div. Do toho třeba pomocí funkce .html() naplním obsah, který si načtu pomocí AJAXU ze stránky zdrojDat.php. V těch datech bude i např. obrázek, který má id=neco. stranka.php má odkaz na script.js ve kterém je handler na kliknutí na id neco. Problém je v tom, že při kliknuti na obrázek není žádná reakce, protože on ten hendler hledá na stránce zdrojDat.php která je zdrojem dat a né na stránce stranka.php. Mohli byste mi nějak v tomto směru pomoct jak to vyřešit ? |
||
Joker Profil |
#2 · Zasláno: 27. 8. 2013, 12:48:16
Pacl:
Spíš tipuji problém v tom, že když „stranka.php má odkaz na script.js“, spustí se ten skript už při načítání stránky, žádný prvek s tím id nenajde a tím to skončí. Po načtení toho dodatečného HTML kódu je potřeba spustit kód, který najde ten (teď už existující) prvek a pověsí na něj obsluhu události. |
||
pcmanik Profil |
Pacl:
$('body').on('click', '#nejakeID', function() { ... }); |
||
Amunak Profil |
#4 · Zasláno: 27. 8. 2013, 13:15:31
Cokoliv, co chceš vykonat (připojení handlerů) na obsahu, který získáš až v AJAX requestu, musíš provést až v callbacku toho AJAX requestu. Tedy nejspíš za částí, kde pomocí .html vkládáš ten obsah.
Může to vypadat třeba takto: // soubor s funkcí handleru var provedeSePoKliknutiNaIdNeco = function(){ alert('provedlo se kliknutí'); }; //AJAX $.get('obsah.html', function(data) { $('#vysledek').html(data); //vložím přijatá data do #vysledek $('#id-neco').on('click', provedeSePoKliknutiNaIdNeco); //přiřadím funkci, která se má provést }); Případně se může i obsah té funkce napsat přímo do handleru jako anonymní funkce. |
||
pcmanik Profil |
#5 · Zasláno: 27. 8. 2013, 14:01:08
Amunak:
Nemusí to robiť v callbacku stačí priradiť udalosť na rodiča a odchytávať kliknutia na potomkoch, ako v mojom prípade. |
||
Pacl Profil |
#6 · Zasláno: 27. 8. 2013, 14:25:23
Díky moc, řešení
$('body').on('click', '#nejakeID', function() { ... }); to vyřešilo :-) |
||
Časová prodleva: 11 let
|
0