Autor Zpráva
Tomáš1
Profil *
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 *
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
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 *
Kcko:
Veľká vďaka, upravím takto.
Karol
Profil *
Tomáš1:
Tomáš ako vyzerá ten súbor pagetoload?

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:

0