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 :

ajout de class + lightbox (Pirobox)


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    186
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 186
    Par défaut ajout de class + lightbox (Pirobox)
    Bonjour à tous, ou plutôt re-bonjour...
    Me voilà avec un petit soucis que je ne comprend absolument pas.
    Sur mon blog wordpresse, j'utilise un effet lightbox grâce à pirobox.
    Jusque là tout va bien. J'ai fait un petit script jQuery que voilà :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
         <script type="text/javascript">  
              $(document).ready(function($) {
                $("a[href$='.jpg'], a[href$='.jpeg'], a[href$='.gif'], a[href$='.png']").each(function(){
                    if (!$(this).hasClass('pirobox')) {
                        $(this).addClass('pirobox');
                    }
                });
            })
        </script>
    Qui me permet d'ajouter la class pirobox à toutes mes images dont l'url pointe vers les images en questions...

    Le hick, c'est qu'avec mon script, la class est bien ajouté dans mon image, mais rien ne se passe lorsque je clique dessus. En gros le lien pointe bien vers l'image mais sans effet lightbox.
    Le plus incompréhensible c'est qu'en écrivant class="pirobox" manuellement lors de l'édition de mon article, ça fonctionne !

    Voilà un exemple sur l'article que je viens d'écrire : article

    En regardant la source de l'image d'entête vous vérez bien class="pirobox hovering" (hovering étant pour l'effet d'opacité blanc), dans ce cas, la classe est ajouté en php lors de la création de page.

    Dans l'autre cas, sur l'image au coeur de l'article, vous verrez également class="pirobox", cette fois ajouté en js mais rien ne se passe...

    Je suis un peu perdu , des éclairages ou des réponses à des cas similaires pourraient m'aider.
    Merci

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    186
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 186
    Par défaut
    je m'auto-répond...
    J'ai finalement trouvé le problème.
    La fonction pirobox n'était éxécutée qu'une fois lors du chargement de la page et mon script injectait la class alors que pirobox était déjà éxécuté...du coup. Ba la class était bien là mais ça ne fonctionnait pas.
    Après beaucoup de tests de repositionnement de mes différentes lignes de code dans ma page. J'ai finalement positionné mon petit script juste avant que que la fonction pirobox soit éxévutée. Ainsi, la class est créée avant que pirobox ne crée les différentes tables html pour afficher les lightbox.
    Je ne sais pas si c'est claire...mais ça fonctionne.

    La fin de pirobox.js

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    ...
    ...
    ...
    $("a[href$='.jpg'], a[href$='.jpeg'], a[href$='.gif'], a[href$='.png']").each(function(){
    				if (!$(this).hasClass('pirobox')) {
    					$(this).addClass('pirobox');
    				}
    			});
    		start_pirobox();
    	}
    })(jQuery);

  3. #3
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    voir aussi live() , on() ou delegate() ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    186
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 186
    Par défaut
    Merci pour ton conseil, bien que je ne m'y connaisse que très peu et je ne penses pas que les fonctions dont tu parles me concernent ici.

    Dans la mesure où pirobox.js est exécuté une fois seulement au chargement de la page. Il n'est déclencher par aucun évènement.

    Je m'explique. Pirobox va ajouter dans le DOM les différentes balises nécessaires à l'affichage de la lightbox puis les cacher. C'est seulement lors du click sur l'image que l'évènement "click" pour le coup intervient et affiche les différents éléments préalablement générés puis cachés.

    Si j'ai bien compris, live() et on() permettent de liés des éléments à une fonctions même si ils sont générés après l’exécution de cette dernière, hors là, c'est la fonction qu'il aurait fallu exécuter après la création des éléments.

  5. #5
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    sisi justement ce sont des methodes qui permettent de faire heriter aux elements crées dynamiquement après le ready, les evenements attibués dans le ready
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    186
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 186
    Par défaut
    Et bien alors je n'ai pas bien compris. Si tu pouvais me rediriger vers un exemple ou autre je suis preneur. Je n'ai pas trouvé d'explication ni de démonstration.
    Merci

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

Discussions similaires

  1. [AJAX] [SRC] Ajout de classe au tutoriel d'Olivier Lance "modification inline de données"
    Par dream_of_australia dans le forum Contribuez
    Réponses: 8
    Dernier message: 27/10/2014, 19h25
  2. ajouter des classes à une app déployée
    Par barhili04 dans le forum C#
    Réponses: 4
    Dernier message: 25/05/2007, 12h57
  3. ajouter une classe dans un projet
    Par bonbino dans le forum C++Builder
    Réponses: 4
    Dernier message: 23/10/2006, 14h35
  4. Ajouter une class CSS a une nouvelle cellule
    Par Arfigado dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 26/09/2006, 10h08
  5. [debutant] Comment ajouter des .class ?
    Par Slein dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 30/04/2004, 14h30

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