[Jquery, AJAX] Dynamic Content

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Mitchell van de Ree

Mitchell van de Ree

04/02/2013 15:55:25
Quote Anchor link
Beste Lezer.

Ik heb een probleempje. Met de volgende code:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<script type="text/javascript">
    function ajaxLoad(str){
        if (str==""){
          document.getElementById("contentarea").innerHTML="";
          return;
          }
        xmlhttp=new XMLHttpRequest();
        xmlhttp.onreadystatechange=function(){
            if (xmlhttp.readyState==4 && xmlhttp.status==200){
            document.getElementById("contentarea").innerHTML=xmlhttp.responseText;
            }
        }
        xmlhttp.open("GET","datafetch.php?id="+str,true);
        xmlhttp.send();
    }
</script>


Hiermee laad ik met de url: <a href="#" onclick="ajaxLoad(this.id);" id="16"> de pagina datafetch.php?id=16 in op de plek van <div id="contentarea">.

Nu komt het, op de plek wil ik namelijk een aantal plaatjes weergeven die te openen zijn door middel van een lightbox. Deze lightbox wordt met de onderstaande code toegevoegd:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<a        href="images/pic08.jpg"
                            data-target="flare"
                            data-flare-scale="fit"
                            data-flare-gallery="gallery2"
                            data-flare-thumb="images/pic08.jpg"
                            data-flare-bw="images/pic08.jpg"
                            class="image">
        
                            <img src="images/pic08.jpg" alt="project" style="width:280px;" /></a>


Alleen nu komt het, open ik de lightbox op de pagina zelf dan doet hij het. Ga ik naar datafetch.php?id=16 dan doet hij het ook! Maar laad ik de content via de ajax op de pagina, dan doet hij het dus niet.

Weet iemand hier een oplossing voor?
Alvast bedankt!
 
PHP hulp

PHP hulp

26/11/2024 01:42:34
 
Erwin H

Erwin H

04/02/2013 16:28:19
Quote Anchor link
Grote kans dat te maken heeft met hoe de lightbox functionaliteit wordt gebonden aan de elementen. Waarschijnlijk wordt dat gedaan door na het laden van de pagina de event handlers aan de op dat moment op de pagina aanwezige elementen te binden. Die bindingen bestaan dan, maar laadt je daarna nieuwe elementen op de pagina, dan zijn de events daar niet aan gebonden. Je zult die event handlers dan dus na de ajax load aan die nieuwe elementen moeten binden.
 
Mitchell van de Ree

Mitchell van de Ree

04/02/2013 16:55:54
Quote Anchor link
Erwin H op 04/02/2013 16:28:19:
Grote kans dat te maken heeft met hoe de lightbox functionaliteit wordt gebonden aan de elementen. Waarschijnlijk wordt dat gedaan door na het laden van de pagina de event handlers aan de op dat moment op de pagina aanwezige elementen te binden. Die bindingen bestaan dan, maar laadt je daarna nieuwe elementen op de pagina, dan zijn de events daar niet aan gebonden. Je zult die event handlers dan dus na de ajax load aan die nieuwe elementen moeten binden.


Hmm ja, ik snap hem al. Ik moet hem namelijk zo in de pagina zetten:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<html>
<head>
    <script type="text/javascript">(function(H){H.className=H.className.replace(/\bno-js\b/,'js')})(document.documentElement)</script>
    <script type="text/javascript" src="js/jquery.js"></script>
    <script type="text/javascript" src="js/bootstrap/bootstrap.min.js"></script>
    <link href="js/pe.flare/jquery.pixelentity.flare.min.css" rel="stylesheet"/>
    <script type="text/javascript" src="js/pe.flare/jquery.pixelentity.flare.min.js"></script>
</head>        
<body>        

 <script type="text/javascript">
          jQuery(function($){
              $('a[data-target="flare"]').peFlareLightbox();
          });
 </script>
Gewijzigd op 04/02/2013 16:56:18 door Mitchell van de Ree
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.