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 :

Insérer un lien dynamiquement


Sujet :

jQuery

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Février 2007
    Messages
    747
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 747
    Points : 168
    Points
    168
    Par défaut Insérer un lien dynamiquement
    Bonjour,

    je débute avec jQuery...
    je souhaiterais ajouter un lien a href à un titre créé avec jQuery depuis une fonction.

    J'ai mis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    jQuery('.video').html(json.title).attr('href',json.url).attr('target','_blank');
    Mais je récupère ce résultat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <h4 class="mes classes"  href="https://www.aaaa.fr" target="_blank">Mon titre</h4>
    J'aurais voulu
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <h4 class="mes classes"><a href="https://www.aaaa.fr" target="_blank">Mon titre</a></h4>
    Comment s'y prendre ?

    Merci pour l'aide
    Paul

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <h4 class="video autres classes"></h4>

    Code jQuery : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    json = {
      'title' : 'Mon titre',
      'url' : 'https://www.aaaa.fr',
    }
     
    jQuery('.video').append('<a>');
    jQuery('.video > a').html(json.title).attr('href',json.url).attr('target','_blank');

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

    Informations forums :
    Inscription : Février 2007
    Messages : 747
    Points : 168
    Points
    168
    Par défaut
    Bravo.
    Bravissimo.

    Je reste toujours émerveillé de voir le code arriver à faire ce qu'on lui demande.
    D'autant plus que je n'arrive pas à bien l'exprimer...
    Alors ça a toujours quelque chose de magique.


    Merci.

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Février 2007
    Messages
    747
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 747
    Points : 168
    Points
    168
    Par défaut
    Bon, je me suis réjouis trop vite…

    Oui le lien en target _blank a bien été généré,
    mais Non le contenu textuel n’est pas mis à jour par la fonction alors qu’il le devrait

    Bon c’est sans doute de ma faute avec les modifications de code pour essayer de simplifier…


    Alors voici :

    Code initial avant l’insertion du lien.
    L’avant dernière ligne génère le bon texte à chaque lancement de la fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    success: function (json) {
    		if (json != 0){
    		jQuery('.video').html('');
    		jQuery('.video').html(json.title);
    		jQuery('.video').next().children().attr('src',json.image);
    		jQuery('.video').next().children().css( "cssText", "width: 120px !important" );
    		jQuery('.video').next().next().html(json.text);
    		jQuery('#end_at').val(json.end_at);
    		}

    Code actuel :
    A l’avant dernière ligne le code génère bien le bon lien,
    Mais le contenu textuel n’est plus modifié par la fonction alors qu’il le devrait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    success: function (json) {
    		if (json != 0){
    		jQuery('.video').html('');
    		jQuery('.video').append('<a>');
    		jQuery('.video > a').html(json.title).attr('href',json.url).attr('target','_blank');
    		jQuery('.video').next().children().attr('src',json.image);
    		jQuery('.video').next().children().css( "cssText", "width: 120px !important" );
    		jQuery('.video').next().next().append('<a>');
    		jQuery('.video > a').next().next().html(json.text).attr('href',json.url).attr('target','_blank');
    		jQuery('#end_at').val(json.end_at);
    		}
    Un dernier petit coup de pouce ?

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    montre le code HTML qui va avec.
    .next().next() ?

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Février 2007
    Messages
    747
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 747
    Points : 168
    Points
    168
    Par défaut
    Oops... j'aimerais bien te copier/coller le code html mais je ne vois vraiment pas lequel...


    En tous cas, utilisé sur une seule ligne, tel quel, ce code fonctionne et génère le bon texte (mis à jour)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     jQuery('.video').next().next().html(json.text);

  7. #7
    Invité
    Invité(e)
    Par défaut
    C'est simple :
    • Tu as des balises avec la classe "video" (.video),
    • et un div (?) avec l'id "end_at" (#end_at).


    C'est ce qu'on veut voir...
    Sinon, on ne peut pas savoir quoi corriger.

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Février 2007
    Messages
    747
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 747
    Points : 168
    Points
    168
    Par défaut
    OKi
    Ça c'est le code html généré :
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <div class="nspArt nspCol3" style="padding:0 20px 20px 0;clear:both;">
    	<input type="hidden" name="end_at" id="end_at" value="2018-10-12T15:40:01+0000">
    	<h4 class=" nspHeader tleft fnone has-image"><a href="https://www.test.com" target="_blank">Texte OK</a></h4><a href="https://www.test.com" class="nspImageWrapper tleft fleft gkResponsive" style="margin:6px 14px 0 0;" target="_blank"><img class="nspImage"
    		  src="mon_image_OK MISE A JOUR.png" alt="" style="width: 120px !important;"></a>
    	<p class="nspText tleft fnull"><a href="https://www.test.com" target="_blank">Texte NON MIS A JOUR</a><a></a><a></a></p><a class="readon fright" href="https://www.test.com" target="_blank">Texte OK</a>
    </div>

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Février 2007
    Messages
    747
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 747
    Points : 168
    Points
    168
    Par défaut
    Ça n'est pas ce que tu me demandais ?

  10. #10
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .....Texte NON MIS A JOUR</a><a></a><a></a>.....
    1- Et ça, ça ne te dérange pas ?
    Ça devrait pourtant te mettre la puce à l'oreille.

    2- Et je ne vois aucune balise avec la classe "video" ??

    3- Quel est le code initial (AVANT modif. JS) ?

    4- A tout hasard je dirais qu'il faut remplacer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    		jQuery('.video > a').next().next().html(json.text).attr('href',json.url).attr('target','_blank');
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    		jQuery('.video').next().next().find('a').html(json.text).attr('href',json.url).attr('target','_blank');
    Dernière modification par Invité ; 14/10/2018 à 09h36.

  11. #11
    Membre habitué
    Profil pro
    Inscrit en
    Février 2007
    Messages
    747
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 747
    Points : 168
    Points
    168
    Par défaut
    Pardon, je n'avais pas vu que tu avais édité ton post initial et je cherchais de mon côté.

    De ton côté, ton "à tout hasard" tombe évidemment pile dedans !


    Je récupère le bon texte, mais doublé.
    Alors j'ai enlevé à mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    jQuery('.video').next().next().append('<a>');
    qui était à l'origine des <a></a> successifs à chaque reload du script.

    Tout semble impec !

    Merci infiniment.
    (si, si...)

  12. #12
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 144
    Points : 44 954
    Points
    44 954
    Par défaut
    Bonjour,
    je viens de regarder rapidement ton code jQuery et le moins que l'on puisse dire qu'il te facilite le « plantage » !
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    jQuery('.video').append('<a>');
    jQuery('.video > a').html(json.title).attr('href', json.url).attr('target', '_blank');
    tu accèdes en fait au même élément <a> crée fraichement.

    Tu aurais meilleur compte de créer cet élément en utilisant le chainage, tu gagnerais en lisibilité
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    var elem = $("<a></a>", {
        "href": json.url,
        "title": json.title,
        "target": "_blank",
        "style": json.style,
        "text": json.texte
      })
      .appendTo($("'.video"));
    Une bonne solution est souvent d'écrire le HTML auquel on veut aboutir pour bien en visualiser les hiérarchies.

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

Discussions similaires

  1. [FLASH MX2004] Insérer une image dynamiquement
    Par Brian3D dans le forum Flash
    Réponses: 5
    Dernier message: 04/04/2005, 11h02
  2. [Débutant] Pb avec les paramètres dans lien dynamique
    Par hackwell69 dans le forum Struts 1
    Réponses: 2
    Dernier message: 21/02/2005, 12h33
  3. [DisplayTag] Comment créer un lien dynamique
    Par tscoops dans le forum Taglibs
    Réponses: 3
    Dernier message: 17/02/2005, 10h53
  4. [Javascript] Suppression de lien dynamique
    Par Invité4 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 03/01/2005, 11h36
  5. [CR7] Insérer une image dynamiquement
    Par yoloosis dans le forum SAP Crystal Reports
    Réponses: 12
    Dernier message: 28/07/2003, 10h54

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