IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

jQuery Discussion :

lightbox dans image chargé en AJAX [AJAX]


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 162
    Par défaut lightbox dans image chargé en AJAX
    Bonjour,

    Je tente de faire fonctionner un plugin lightbox sur une image chargée en AJAX...

    J'utilise le plugin lightbox de Leandro Vieira :
    http://leandrovieira.com/projects/jquery/lightbox/

    Mais je ne suis pas fixé sur ce choix... C'est juste une habitude d'utilisation dans mes projets car je le trouve léger et simple.

    Je charge donc JQuery (1.8.2), puis le plugin lightbox. J'ai testé sur une image de la page et tout fonctionne bien, donc tout est bien chargé.

    Ensuite dans ma page j'ai un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <div id="detail-ref"></div>
    dans lequel, après avoir cliqué sur lien, je charge en AJAX une image. Voici le code chargé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
                  <div>
                    <a href="./img/test-large.jpg" title="test" class="lightbox"><img src="./img/test-mini.jpg" alt="image test" /></a>
                  </div>
    Là encore pas de soucis, mon code récupéré en AJAX s'affiche correctement dans la div.

    Mais comme l'élément n'existe pas au moment du chargement de la page et donc de lightbox, la lightbox ne fonctionne pas.
    Je pensais régler le problème en chargeant lightbox dynamiquement à chaque clic sur le lien. Voici mon idée sous forme de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
        <script type="text/javascript">
          $(document).ready(function(){
            $('#detail-ref').on("click", ".lightbox", function() {
              $(this).lightbox();
            });
          });
        </script>
    Mais ça n'a pas l'air aussi simple... en tout cas ça ne fonctionne pas comme ça. Quelque chose m'échappe mais je ne vois pas quoi...

  2. #2
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Décembre 2007
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 69
    Par défaut
    Hello,

    Je ne suis pas sur mais, ne devrais tu pas faire ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <script type="text/javascript">
       $(document).ready(function(){
            $('#gallery a').lightBox();
       });
    </script>
    Avec quelque chose comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <div id="gallery"><a href="./img/test-large.jpg" title="test" class="lightbox"><img src="./img/test-mini.jpg" alt="image test" /></a></div>

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 162
    Par défaut
    ?? Soit je n'ai pas compris où tu voulais en venir, soit tu n'as pas compris mon problème
    Ce que tu me proposes là, c'est une utilisation classique de lightbox() qui n'a pas de rapport avec mon problème d'ajax, non ? Mais pour l'utilisation classique de lightbox, comme je le précise dans mon message, je n'ai aucun problème, tout fonctionne bien. A ce propos, je confirme également que lightbox n'a nullement besoin d'une majuscule à la lettre B.

    Mon soucis n'a rien à voir avec l'utilisation classique de lightbox mais avec son utilisation dans un contenu chargé en AJAX. Ce contenu n'est pas reconnu par lightbox car absent de la page au moment du chargement. D'où mon idée d'utiliser .on() ... sauf que ça n'a pas l'air aussi simple que je le croyais...

    EDIT : Mea maxima culpa ! lightBox a bien besoin de sa majuscule. Mais ça ne règle pas mon problème qui reste entier...

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Décembre 2007
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 69
    Par défaut
    Je pense que je n'ai pas du bien comprendre ta problématique.

    Que charges-tu en Ajax ? Dans ton exemple, je ne vois aucun chargement en Ajax.

    Concernant lightbox de Leandro Vieira que tu utilises, dans le source du son .js il est mentionné avec un "B" majuscule. De même, dans la rubrique "How to use" de son site, il l'indique comme tel.

    Concernant Ajax peut-être que ceci pourrait aider :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    $.ajax({
      url: 'url de ton code à charger',
      success: function(data) {
        $('#detail-ref').html(data);
        alert('Load was performed.');
     
        //Ici tu mets 
        $('#gallery a').lightBox();
      }
    });

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 162
    Par défaut
    Yep, en effet, j'ai édité mon message précédent. Tu as parfaitement raison, lightBox nécessite un B majuscule Mais en fait, la majuscule a été oublié ici seulement, je l'avais bien dans mon code (c'est pour ça qu'au départ, sûr de moi je disais qu'il n'y avait pas de majuscule... mais après vérif, il y a bien majuscule dans mon code )

    Je n'ai pas mis le code du chargement Ajax pour éviter de faire un message trop à rallonge (souvent pas lu). Je l'ai donc simplement expliqué dans mon message initial en donnat le div dans lequel se charge ma requête AJAX et le HTML (correctement) chargé dans ce DIV.

    Ceci dit, je n'avais pas du tout pensé à mettre le chargement de la lightBox directement dans l'AJAX ! En effet cette solution me paraît évidente maintenant que je la vois ! Je vais essayer ça tout de suite. Je ne vois pas pourquoi ça ne fonctionnerait pas...

    EDIT : En effet, aucun soucis de cette manière

  6. #6
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Décembre 2007
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 69
    Par défaut
    Citation Envoyé par manu_71 Voir le message
    EDIT : En effet, aucun soucis de cette manière
    Je ravis de voir que ça fonctionne Ravis d'avoir pu t'aider

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 10/10/2009, 19h40
  2. [AJAX] Accès fonctions déclarées dans page chargée par Ajax
    Par yagrasdemonde dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 04/02/2008, 15h33
  3. Réponses: 1
    Dernier message: 27/09/2007, 15h31
  4. Effacer une image chargée dans un TImage
    Par Lalanne dans le forum C++Builder
    Réponses: 2
    Dernier message: 11/07/2007, 16h26
  5. [AJAX] Du JS dans un script chargé en AJAX ?
    Par dorian53 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 10/04/2007, 12h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo