| Autor | Zpráva | ||
|---|---|---|---|
| Legáček Profil |
#1 · Zasláno: 29. 8. 2012, 22:51:42
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 |
#2 · Zasláno: 29. 8. 2012, 22:59:31
Legáček:
Ano, funkci live využíváte správně. |
||
| Chamurappi Profil |
#3 · Zasláno: 29. 8. 2012, 23:02:20
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 |
#4 · Zasláno: 29. 8. 2012, 23:09:49
Chamurappi:
$('a[rel=lightbox]').live('click', function(){
$(this).lightBox();
});$('a[rel=lightbox]').lightBox(); a vše funguje. Díky za pochopení funkce .live().
|
||
|
Časová prodleva: 14 let
|
|||
0