Aplikování document.ready() po AJAX požadavku
- Ondřej Mirtes
- Člen | 1536
Ahoj,
jquery.nette.js
způsobuje, že po aktualizování části stránky
pomocí AJAXu už na něj nejsou aplikovány změny z
$(document).ready()
metody, takže ta znovunačtená část je, co
se týče Javascriptu, „mrtvá“.
Googlil jsem a je to hodně častý problém, nicméně všichni radí
použít metodu live()
, což jquery.nette.js
dělá.
Nevím tedy, jak to myslí…
- Honza Marek
- Člen | 1664
LastHunter napsal(a):
Ahoj,
jquery.nette.js
způsobuje, že po aktualizování části stránky pomocí AJAXu už na něj nejsou aplikovány změny z$(document).ready()
metody
Nezpůsobuje, to je normální stav.
Pokud potřebuješ na metody navěsit nějaké handlery, tak použij funkci jQuery live.
Tedy místo
$(function () {
$("a").click(funkce);
});
bude
$("a").live("click", funkce);
To způsobí navěšení události, kdykoliv se objekt a objeví. Nikoliv jen po načtení stránky.
Pokud potřebuješ víc než navěšení událostí, je potřeba použít jQuery plugin livequery.
- Ondřej Mirtes
- Člen | 1536
OK, díky. A nelze náhodou po updatu snippetů zavolat znova tu metodu
ready()
? :)
Protože třeba nějaké hovery na tlačítka jsou v pohodě, ty se do
live
dají přepsat, ale co když mám v
ready
toto:
$(function() {
$(".nospam").hide();
$("input.nospam").val("no" + "spam");
});
A zrovna mám ve snippetu chráněný formulář. Už se mi stalo, že se mi po AJAX odezvě tato automaticky skrývaná pole znovu objevila, ale nevěděl jsem co s tím.
Editoval LastHunter (4. 11. 2009 18:43)
- Honza Marek
- Člen | 1664
Tak to by šlo taky, pokud bys měl tu funkci někde uloženou.
function poNacteni() {
...
}
// zavolání po načtení stránky
$(poNacteni);
// po ajaxovém požadavku
jQuery.ajaxSetup({
success: function () {
jQuery.nette.success();
poNacteni();
}
});