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 :

Toogle et modification dynamique de lien innerHTML


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Webdesigner
    Inscrit en
    Août 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Webdesigner
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Août 2013
    Messages : 5
    Par défaut Toogle et modification dynamique de lien innerHTML
    Bonsoir,

    Je suis tout débutante en javascript et j'ai donc beaucoup de lacunes et pas forcément de bons raisonnements, j'aurais donc besoin d'un petit coup de pouce.

    Voici le soucis que je rencontre : J'ai une page qui comporte un petit jquery SlideUp/SlideDown, je me suis inspiré d'un tuto trouvé sur le net. S'agissant d'une newsletter, ce script permet de dérouler un paragraphe caché d'un article lorsque l'on clique sur le lien "lire" correspondant, puis de le cacher de nouveau en recliquant, et le cas échéant lorsque l'on déroule un autre article, celui qui était déjà déroulé se referme également.

    Voici la portion de code correspondante :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    <!doctype html>
    <html>
    <head>
    	<title>Test</title>
    	<script type="text/javascript" src=""http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js""></script>
    </head>
     
    <body>
     
    	<article>
    		<p>Partie du texte qui reste visible</p>
    		<p class="deroulant">Partie du texte qui est cachée et qui se déroule avec l'événement click sur le lien en dessous</p>
    		<a class="lire" href="" alt="">Lire</a>	
    	</article>    
    	<article>
    		<p>Partie du texte qui reste visible</p>
    		<p class="deroulant">Partie du texte qui est cachée et qui se déroule avec l'événement click sur le lien en dessous</p>
    		<a class="lire" href="" alt="">Lire</a>	
    	</article>
    	<!-- Et d'autres articles, etc... -->		
     
     
    <script type="text/javascript">
    $(document).ready( function () {
        $(".deroulant").hide();
            
        $("a.lire").click( function () {
            
                            // Si le déroulant visé est ouvert, le lien refermera celui-ci
                            if ($(this).prev(".deroulant:visible").length != 0) {
                                    $(this).prev(".deroulant").slideUp("slow");
                            }
     
                            // Si un autre déroulant que celui visé est ouvert, il se refermera       
                            else {
                                    $(".deroulant").slideUp("slow");                
                                    $(this).prev(".deroulant").slideDown("slow");
                                    }
            
            return false;
        });    
     
     
    } ) ;
    </script> 
     
    	</body>
    </html>

    J'aimerai maintenant modifier dynamiquement le lien qui déclenche l’événement click pour que son texte se transforme en "Fermer" lorsque le paragraphe est déroulé. J'ai réussi à obtenir de bons résultats avec le code ci-dessous, mais voici enfin mon problème : si l'on clique sur le lien qui s'appelle désormais "Fermer", il redevient "Lire", par contre si je le laisse ouvert et que je déroule un autre article, le premier article se referme mais son lien reste "Fermer".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    <script type="text/javascript">
    $(document).ready( function () {
        $(".deroulant").hide();
     
        $("a.lire").click( function () {
     
    			// Si le déroulant visé est ouvert, le lien refermera celui-ci
    			if ($(this).prev(".deroulant:visible").length != 0) {
    				$(this).prev(".deroulant").slideUp("slow");
    				this.innerHTML = 'Lire';// Ca, pas de soucis, ça fonctionne
    			}
     
    			// Si un autre déroulant que celui visé est ouvert, il se refermera        
    			else {
    				$(".deroulant").slideUp("slow");
    				$(this).prev(".deroulant").slideDown("slow");
    				$("a.lire").innerHTML = 'Lire'; // Ca par contre ça marche pas et c'est ça qui me pose problème!!
    				this.innerHTML = 'Fermer';// Ca aussi ça fonctionne
    				}
     
            return false;
        });    
     
     
    } ) ;
    </script>
    Sauriez-vous m'indiquer ce qui cloche dans mon script, s'il vous plait? (Désolée d'avoir été longue, je voulais m'assurer d'être bien précise). Merci par avance!

  2. #2
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 209
    Par défaut
    Bonjour,
    ligne 4 de la source HTML, il y a une apostrophe en trop ce qui fait que jQuery n'est pas chargé.

    S'agissant d'une newsletter, ce script...
    le javascript n'est pas recommandé dans une newsletter, de même que l'utilisation du HTML5, pour être sûr d'être bien reproduite il faut encore mieux codé en HTML4 associé à un charset UTF-8.

  3. #3
    Nouveau membre du Club
    Femme Profil pro
    Webdesigner
    Inscrit en
    Août 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Webdesigner
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Août 2013
    Messages : 5
    Par défaut
    Oui l’apostrophe c'est de ma faute, ça n'y est pas dans mon fichier, j'ai juste doublement copié-collé l'adresse en laissant les précédents guillemets, faute d’inattention en rédigeant le post.

    En fait, il ne s'agit pas de la version mail, qui est toute simple pour sa part, mais de la page web vers laquelle le lecteur est redirigé s'il veut lire l'article en ligne, ça ne devrait donc pas poser de problème, si?

    Par ailleurs, à part la ligne 17 de mon script (deuxième version) tout le reste fonctionne très bien.

  4. #4
    Nouveau membre du Club
    Femme Profil pro
    Webdesigner
    Inscrit en
    Août 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Webdesigner
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Août 2013
    Messages : 5
    Par défaut SOLUTION!
    Ok, j'ai trouvé grâce à un ami!

    J'écrivais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $("a.lire").innerHTML = 'Lire';
    Sauf que ne connaissant pas la syntaxe propre à Jquery, j'utilisais une syntaxe plus Javascript. Ainsi, en écrivant comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $("a.lire").html('Lire');
    ... et bien ça fonctionne!

    Désolée du dérangement, en espérant que ça puisse servir à d'autres newbies acharnés comme moi

    Bonne soirée!

  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
    vu qu'en plus ce n'est pas du code html que tu insères, mais juste du texte ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $("a.lire").text('Lire');



    sinon pour redescendre de jquery à DOM pour utiliser innerHTML ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $("a.lire").get(0).innerHTML='Lire';
    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
    Nouveau membre du Club
    Femme Profil pro
    Webdesigner
    Inscrit en
    Août 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Webdesigner
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Août 2013
    Messages : 5
    Par défaut
    sinon pour redescendre de jquery à DOM pour utiliser innerHTML ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $("a.lire").get(0).innerHTML='Lire';
    Merci pour l'astuce, je ne savais pas que c'était possible

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

Discussions similaires

  1. Modification d'un lien dynamiquement
    Par Hotfirenet dans le forum jQuery
    Réponses: 2
    Dernier message: 12/11/2012, 16h56
  2. Javascript - Modification dynamique de lien
    Par Kerweb dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 14/02/2008, 16h05
  3. [JTree] Modification dynamique du texte à afficher
    Par jIdJo dans le forum Composants
    Réponses: 2
    Dernier message: 17/06/2005, 16h49
  4. [Débutant][JDBC] Rendre "dynamique" le liens à la
    Par steelidol dans le forum JDBC
    Réponses: 2
    Dernier message: 27/04/2005, 15h42
  5. [FLASH MX] Gestion dynamique de liens
    Par guy2004 dans le forum Flash
    Réponses: 18
    Dernier message: 20/01/2005, 08h21

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