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 :

Sélectionner un ou deux mots (qui se suivent) précis dans une phrase et ajouter autour la balise <a></a>


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 2011
    Messages
    253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 253
    Par défaut Sélectionner un ou deux mots (qui se suivent) précis dans une phrase et ajouter autour la balise <a></a>
    Bonjour,
    je voudrais selectionner les mots ou composition de mots suivants précisément et leur ajouter autour (à l'extérieur du/des mots selectionner) la balise <a>.
    Un lien renvoie vers la présentation de chaque activités et coachs
    - Plateau musculation
    - ABDO
    - CROSS FIT
    - 6 prénoms et eventuellement leur parenthèse ()

    Voici la source de mon problème : Fiddle

    Jusqu'à présent j'ai réussi uniquement avec "Plateau musculation". La raison : Les deux mots sont uniques et composent la totalité de la div.
    "tab" est du jquery NoConflict car je travail avec wordpress et de multiple extensions.

    le script qui marche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    tab("td div").filter(function () {
              if (tab.trim(tab(this).text()) == "Plateau musculation") {
                tab(this).wrapAll("<a href='http://musculaffitte.com/plateau-musculation/' class='agenda-link'></a>");
              }
    Or pour les autres mots cités plus haut, je dois les sélectionner séparément alors qu'il y en a d'autres avant et après.

    Voici ce que j'ai tenté, mais je rencontre une erreur et surtout je ne sais pas si cette façon de faire est bonne.:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    var plamus = "Plateau musculation";
            var plamusrex = new RegExp('\\b' + plamus + '\\b', "g");
            tab("td div").match(plamusrex).wrapAll("<a href='http://musculaffitte.com/plateau-musculation/' class='agenda-link'></a>");

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 207
    Par défaut
    Bonjour,
    j'ai du mal à comprendre ton approche, ton tableau est visiblement créé de façon dynamique, donc c'est à la création qu'il te faut prévoir ces encapsulages. (idem d'ailleurs pour ta mise en forme bien compliquée me semble-t-il!)

    Il te faut récupérer les contenus de tes cellules et boucler sur celles-ci en même temps que tu boucles sur les éléments à trouver.

    Tu peux faire un simple replace(mot_cle, lien_a_mettre) sur le innerHTML.

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

    Informations forums :
    Inscription : Février 2011
    Messages : 253
    Par défaut
    Merci pour ce conseil, dont je ne comprends d'ailleurs pas tout .
    Je ne veux pas remplacer qqchose, je veux ajouter autour d'un mot une balise .

    Mon tableau doit être aussi simple que possible à manipuer pour l'utilisateur .
    A chaque fois que l'utilisateur entre un texte "Plateau musculation, ABDO, etc" un lien sera ajouté en fonction du mot écrit .

    Je ne peux donc pas prévoir à l'avance ce que l'utilisateur va ajouter comme texte et à quel endroit.

    Ainsi existe t-il un script simple pour :
    1) Cibler ou selectionner un mot ou deux mots qui se suivent précisément dans une phrase
    2) ajouter autour de ce(s) mot(s) la balise <a></a>

    je pensais eventuellement, sans savoir quel fonction jquery utilisé, récupérer la totalité des lettres d'une div et y selectionner le mot, ensuite j'ajoute la balise <a> autour avec wrappAll .
    sauf s'il existe une methode simple pour selectionner un mot dans une phrase sans le reste de la phrase.

  4. #4
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 207
    Par défaut
    Mon tableau doit être aussi simple que possible à manipuer pour l'utilisateur .
    A chaque fois que l'utilisateur entre un texte "Plateau musculation, ABDO, etc" un lien sera ajouté en fonction du mot écrit .
    donc il y a modification dynamique et possiblement anarchique !

    Le plus simple me semble de proposer des choix possibles ce qui te permet de formater la sortie en conséquence.

    2) ajouter autour de ce(s) mot(s) la balise <a></a>
    c'est ce que peut te faire la méthode replace
    exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    var txt = 'ABDO (Robin)';
    txt = txt.replace('ABDO', '<a href="#abdo">ABDO</a>');
    alert(txt);
    //>> affiche :  <a href="#abdo">ABDO</a> (Robin)

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

    Informations forums :
    Inscription : Février 2011
    Messages : 253
    Par défaut
    Bonjour,
    merci.

    j'ai deux interrogations :
    1) comment ce script va t-il comparer le texte en variable et celui dans la div ?
    2) si je résonne bien, il faut inscrire la totalité du texte contenu dans la div pour effectuer une comparaison avec un mot précis pour le remplacer ?
    Cela voudrais dire que pour chaque cas : ABDO (Robin), ABDO (Anthony), etc, je dois refaire un script ou bien rajouté une condition ?
    N'y a t-il pas plus simple ?

    N'est-il vraiment pas possible de sélectionner un mot dans une phrase contenu dans une div sans devoir faire la comparaison sur l'ensemble du texte contenu dans la div que l'on inscrit dans une variable ?

    N'y aurait-il pas un script pour ? :
    a) parcourir toutes les div du tableau ( je n'ai pas d'id)
    b) recuperer toutes les lettres ou tous les mots ( de préférence) en respectant la casse (prise en comtpe des majuscules)
    c) effectuer la comparaison et le remplacement sur toutes les div comportant les mêmes lettres d'affilées. (le "replace" de ton exemple)

    ??

  6. #6
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 207
    Par défaut
    N'est-il vraiment pas possible de sélectionner un mot dans une phrase contenu dans une div sans devoir faire la comparaison sur l'ensemble du texte contenu dans la div que l'on inscrit dans une variable ?
    Pour faire la recherche d'existence d'un mot dans une phrase le minimum d'information qu'il faille c'est le texte de la phrase et le mot à chercher

    N'y aurait-il pas un script pour ? :
    a) ...
    b) ...
    c) ...
    Tout fait non, c'est à toi de le mettre en place, concernant l'idée ID il n'en est pas forcément besoin.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var oTable = document.querySelector('TABLE');      // retourne la référence de la 1st <table> trouvé dans le document.
    var lstTable = document.querySelectorAll('TABLE'); // retourne la référence de toutes les <table> trouvé dans le document.
    pour toi qui fait cela en jQuery, je t'engage à regarder a documentation sur les sélecteurs et celle sur la manipulation des éléments.

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

Discussions similaires

  1. [AC-2010] Pouvoir effectuer un test sur deux enregistrements qui se suivent ?
    Par Warwolf dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 30/10/2015, 09h37
  2. Réponses: 7
    Dernier message: 09/09/2014, 11h04
  3. Afficher un mot qui se trouve dans une phrase.
    Par XpFive dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 02/08/2008, 19h47
  4. [MySQL] Faire une jointure entre deux tables qui ne sont pas dans la même base de données
    Par sandddy dans le forum PHP & Base de données
    Réponses: 12
    Dernier message: 03/04/2008, 14h18
  5. [RegEx] highlight d'un mot qui n'est PAS dans un tag html.
    Par FMaz dans le forum Langage
    Réponses: 5
    Dernier message: 22/03/2006, 14h07

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