Autor | Zpráva | ||
---|---|---|---|
Tomáš1 Profil * |
#1 · Zasláno: 11. 7. 2012, 16:30:26
Ahoj,
chcel by som sa spýtať na jednu vec. Používam jQuery na načítanie obsahu divu, po kliknutí. kód vypadá nejak takto, klasika cez ajax: <script> function fadeOutDynamicDiv(callback){ $('#mojdiv').fadeOut(500, callback) } $(function() { $("#nav1).click(function() { var sent_id = $(this).attr('href'); var dataString = 'sent_id='+ sent_id; $.ajax({ url: 'pages/pagetoload.php', data: dataString, type: 'POST', success: function(data){ fadeOutDynamicDiv(function(){ $('#mojdiv').html(data).fadeIn(500); }); } }); return false; }); }); </script> v HTML mam div, s defaultnym obsahom: <div id="mojdiv"> <h2>nejaky nazov</h2> <p>text</p> <div id="hidden"> <div id="inline1"> <p> Lorem ipsum dolor <p> </div> </div> <a id="various1" class="more" href="#inline1">viac info</a> </div> do ktorého sa načíta výstup zo súbora pagetoload.php, podľa predanej hodnoty sent_id. Všeko funguje výborne. Ale pozor. Odkaz <a id="various1" class="more" href="#inline1">viac info</a> používam na vyvolanie Fancyboxu http://fancybox.net/, v ktorom je inline kontent (div <div id="inline1">). Čiže v header je ešte nejaké to načítanie jQuery, JS pre Fancybox, nejaký ten štýl a + nastavenie Fancyboxu: <script> jQuery(document).ready(function() { $("#various1").fancybox({ 'titlePosition' : 'inside', 'transitionIn' : 'fade', 'transitionOut' : 'fade' }); }); </script> Ak sa prvý krát dostanem na stránky, tlačitkom viac info mi pekne vyskočí Fancybox. Ak ale nejakou akciou zmením obsah toho divu mojdiv, cez jQuery - Ajaxom, tak mi prestane Fancybox fungovat. Napriek tomu, že sa presne nahradí kódom z predvoleného divu mojdiv (ako pri prvej návšteve) Ako keby sa nieco prestalo načítavať/brať, konfig pre Fancy box alebo co. Vedel by smi prosím niekto poradiť? Ďakujem |
||
Tomáš1 Profil * |
#2 · Zasláno: 11. 7. 2012, 18:23:28 · Upravil/a: Tomáš1
Tak si odpoviem sám :)
jQuery(document).ready(function() { $("#various1").fancybox({ 'titlePosition' : 'inside', 'transitionIn' : 'fade', 'transitionOut' : 'fade' }); }); som si uložil do externého súbora, fancy_setup.js v hlavičke HTML som si ho zavolal pre defaultny obsah divu. A potom pre dynamickú zmenu takto: updatnutá časť kódu z predch. príspevku: fadeOutDynamicDiv(dynamicDiv, function(){ $('#'+dynamicDiv).html(data).fadeIn(500); $.getScript("js/fancy_setup.js"); }); A šlape ako má :) pardon, ešte úprava, lebo som pastol moj reálny kúsok kódu, pre príklad vyššie takto: fadeOutDynamicDiv(function(){ $('#mojdiv').html(data).fadeIn(500); $.getScript("js/fancy_setup.js"); }); |
||
Kcko Profil |
#3 · Zasláno: 11. 7. 2012, 18:56:30
Tomáš1:
To je možné řešení, ale pořád tam znovu taháš onen js soubor. Lepší je reinit viz http://stackoverflow.com/questions/11099468/how-to-reinitialize-recall-fancybox-after-ajax-updated-dom |
||
Tomáš1 Profil * |
#4 · Zasláno: 11. 7. 2012, 19:29:00
Kcko:
Veľká vďaka, upravím takto. |
||
Časová prodleva: 20 dní
|
|||
Karol Profil * |
#5 · Zasláno: 31. 7. 2012, 22:53:22
Tomáš1:
Tomáš ako vyzerá ten súbor pagetoload? |
||
Časová prodleva: 11 let
|
0