Autor Zpráva
Legáček
Profil
Dobrý den,

prolezl jsem mnoho webových stránek a podle mě je odpověď .live(), .delagate() nebo .on(), i když ta mi moc nefunguje, ale zeptám se ještě tu, jestli není lepší způsob.

Mám stránku index.php, na kterou hned pomocí Jquery-Ajaxu načítám html kód do <div id="nacti"></div>. Všechno běží, tabulka se načte. Jelikož ale načítám html tagy a různý obrázky třeba, tak zde začíná problém. Vše se načte a já v jquery mám, že pokud kliknu na obrázek, má se zobrazit lightbox. To ale nefunguje, protože jsem načítal vše pomocí Ajaxu.
Hledal jsem a našel jsem, že by to šlo udělat $('a[class=cesta]').live('click', function(){$(this).lightBox();}); To mi bohužel na lightbox nefunguje. Zkoušel jsem .live() na jiné věci, jako třeba vymazat řádek v tabulce (opět pomocí Ajaxu) a to mi fungovalo.

Takže shrnuto, chci aby jsem měl tabulku, která se načítá ajaxově, abych při každý operaci (jako vymazat řádek) nemusel reloadovat stránku, ale zase chci, aby mi fungoval Lightbox a celkově jestli funkci .live() využívám správně.

Děkuji za odpovědi
Keeehi
Profil
Legáček:
Ano, funkci live využíváte správně.
Chamurappi
Profil
Reaguji na Legáčka:
Co dělá ta funkce lightBox? Nedělá náhodou jen to, že nastaví určitou reakci na událost click? Tu už nemá moc smysl nastavovat při kliknutí.
Když načítáš věci AJAXem, po načtení se zavolá callback funkce — v ní můžeš novému obsahu nastavit všechno, co potřebuješ. Funkce .live() existuje převážně jen kvůli kodérům, kteří si myslí, že by selektory v jQuery měly fungovat stejně živě jako v CSS, což je neefektivní nesmysl.
Legáček
Profil
Chamurappi:

$('a[rel=lightbox]').live('click', function(){
   $(this).lightBox();
});
takhle jsem si nějak představoval tu funkci. Ale jak radíte, stačilo jí strčit do callbacku od ajaxu $('a[rel=lightbox]').lightBox(); a vše funguje. Díky za pochopení funkce .live().

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: