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 :

Code hexadecimal non traduit avec .text


Sujet :

jQuery

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 226
    Points : 119
    Points
    119
    Par défaut Code hexadecimal non traduit avec .text
    Bonjour.

    J'ai un div recherche que j'étends ou rétracte lors de l'appuie sur une fleche ( &#9660 ).
    De base le div de recherche est caché et j'ai une fléche qui pointe vers le bas. Lors de l'appuie sur la fleche, j'ai bien mon div qui s'affiche mais j'aimerai aussi que la fleche pointe vers le haut.
    Je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <h2>Recherche <span id="wrap">&#9660</span></h2>
     
    <script>
     $("#wrap").click(function() {
                    ($(this).text() === "&#9660") ? $(this).text="&#9650" : $(this).text="&#9660";
                    $("#recherche").slideToggle("slow");
                    });
    </script>
    Seulement au lieu de m'afficher la fleche, j'obtiens le code "&#9650"

    Quelqu'un aurait une solution pour afficher l'afficher correctement?

    Merci.

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 955
    Points : 44 103
    Points
    44 103
    Par défaut
    Bonjour,
    et tu la sors d'où cette syntaxe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ($(this).text() === "&#9660") ? $(this).text="&#9650" : $(this).text="&#9660";

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 226
    Points : 119
    Points
    119
    Par défaut
    Ah oui pardon.
    Comme j'ai essayé avec plusieurs façon (nottament avec "innerHTML"), je me suis embrouillé les pinceax
    En fait c'est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ($(this).text() === "&#9660") ? $(this).text("&#9650") : $(this).text("&#9660");

  4. #4
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 955
    Points : 44 103
    Points
    44 103
    Par défaut
    Quoiqu'il arrive .test() n'interpréte pas le code hTML si tu fais $(this).text('<b>texte</b>') tu auras <b>texte</b> et non texte alors autant passer par .html() ou mieux par une classe avec .toggleClass().

    Dernier point ce n'est pas &#9650 mais &#9650 ; si tu ne veux pas d'embrouille. ( nota : le ; est a recoller).

  5. #5
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Points : 22 933
    Points
    22 933
    Billets dans le blog
    125
    Par défaut
    Il faut tester le caractère UTF-8 '▼'

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <span id="wrap"></span>

    Impossible de mettre le code dans le format correct ! Il se transforme automatiquement !

    Il faut lire jObj.html() == '▼'

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $( "#wrap" ).on( "click", function(){
      var jObj = $( this );
     
      if ( jObj.html() == '▼' ) {
        jObj.html( '▲' );
      } else {
        jObj.html( '▼' );
      }
    });

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  6. #6
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 226
    Points : 119
    Points
    119
    Par défaut
    Merci pour vos réponses.
    @NoSmoking : quand vous parlez d'utiliser toggleClass, vous voulez dire avoir 2 classes avec une fleche differente chacune que j'affiche ou que je cache?

    @danielhagnoul :
    j'ai repris votre code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <h2>Recherche <span id="wrap">▼</span></h2>
     
    <script>
    $( "#wrap" ).on( "click", function(){
      var jObj = $( this );
     
      if ( jObj.html() == '▼' ) {
        jObj.html( '▲' );
      } else {
        jObj.html( '▼' );
      }
    });
    </script>
    mais ça ne change pas la fleche.
    Par contre si je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    $( "#wrap" ).on( "click", function(){
      var jObj = $( this );
     
      if ( jObj.html() == '▼' ) {
        jObj.html( '▼' );
      } else {
        jObj.html( '▲' );
      }
    });
    La la fleche change de sens au 1er clic mais pas aux suivants.
    C'est peut-être parce que jObj.html() ne lit pas '▼' correctement? ( la condition "jObj.html() == '▼' " n'etant pas vérifiée)

  7. #7
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 955
    Points : 44 103
    Points
    44 103
    Par défaut
    vous voulez dire avoir 2 classes avec une fleche differente chacune que j'affiche ou que je cache?
    effectivement en utilsant le CSS suivant par exemple
    Code css : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    h2.expand:after{
      content:'\0025BC';
    }
    h2.collapse:after{
      content:'\0025B2';
    }
    ce qui donne le script
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $(".open").on('click', function() {
        $(this)
          .toggleClass('expand collapse')
          .next().slideToggle("slow");
    });
    exemple complet pour test :
    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
    49
    50
    51
    52
    <!DOCTYPE HTML>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>toggleClass</title>
    <meta name="Author" content="NoSmoking">
    <style>
    html, body{
      margin:0;
      padding:0;
      font: 1em/1.5 Verdana, sans-serif;
    }
    #main {
      width:60em;
      margin:0 auto;
    }
    h1, h2, h3 {
      color:#069;
    }
    h2.open {
      cursor:pointer;
    }
    h2.expand:after{
      content:'\0025BC';
    }
    h2.collapse:after{
      content:'\0025B2';
    }
    h2.open + p{
      display:none;
    }
    </style>
    <script src="http://code.jquery.com/jquery-1.10.2.js"></script>
    <script>
    </script>
    </head>
    <body>
    <div id="main">
      <h2 class="expand open">Recherche</h2>
      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum et efficitur orci, a aliquam odio. Etiam non euismod tortor. Phasellus venenatis bibendum lectus, tempor sollicitudin mauris pretium in. Etiam non ex vitae dui fermentum sodales sed id orci. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Proin id consectetur enim, et tempor nulla. Pellentesque vitae accumsan nulla, ut blandit nisl. Aliquam justo erat, sollicitudin nec facilisis non, faucibus aliquam ante. Nunc luctus ligula eget justo mattis consequat.</p>
      <h2 class="expand open">Recherche</h2>
      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum et efficitur orci, a aliquam odio. Etiam non euismod tortor. Phasellus venenatis bibendum lectus, tempor sollicitudin mauris pretium in. Etiam non ex vitae dui fermentum sodales sed id orci. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Proin id consectetur enim, et tempor nulla. Pellentesque vitae accumsan nulla, ut blandit nisl. Aliquam justo erat, sollicitudin nec facilisis non, faucibus aliquam ante. Nunc luctus ligula eget justo mattis consequat.</p>
    </div>
    <script>
    $(".open").on('click', function() {
        $(this)
          .toggleClass('expand collapse')
          .next().slideToggle("slow");
    });
    </script>
    </body>
    </html>

  8. #8
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 226
    Points : 119
    Points
    119
    Par défaut
    Merci beaucoup pour l'exemple.

    J'aurai juste une question.
    Vous aviez dis "... ou mieux par une classe avec .toggleClass()." mais en quoi cette solution est-elle meilleure?
    Est-ce le fait que l'on utilise pas de condition?

  9. #9
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 955
    Points : 44 103
    Points
    44 103
    Par défaut
    Simplement pourquoi faire en javascript ce que le CSS gère parfaitement, de plus si demain tu veux changer le symbol, pour mettre un ☰ par exemple, tu n'auras pas à modifier du code javascript qui n'est à priori pas concerné par de la mise en forme.

    Mais bon les avis sont partagés là dessus.

  10. #10
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 226
    Points : 119
    Points
    119
    Par défaut
    D'accord.
    Merci pour l'explication.

    Bonne journée!

  11. #11
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Points : 22 933
    Points
    22 933
    Billets dans le blog
    125
    Par défaut
    Citation Envoyé par flavors Voir le message
    @danielhagnoul : j'ai repris votre code mais ça ne change pas la fleche.
    J'ai testé ce code avant de le donner et je viens de vérifier, cela fonctionne très bien chez moi. Bien entendu, ma page web est en UTF-8.

    La solution CSS est préférable.

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  12. #12
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 226
    Points : 119
    Points
    119
    Par défaut
    Je ne comprends pas.
    Pourtant je fais bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <h2>Recherche <span id="wrap">▼</span></h2>
     
    <script>
    $( "#wrap" ).on( "click", function(){
      var jObj = $( this );
     
      if ( jObj.html() == '▼' ) {
        jObj.html( '▲' );
      } else {
        jObj.html( '▼' );
      }
    });
    </script>
    pour l'utf-8 il suffit d'avoir cette ligne dans le <head> non?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <meta charset="utf-8" />

  13. #13
    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 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 637
    Points : 66 656
    Points
    66 656
    Billets dans le blog
    1
    Par défaut
    non le fichier lui même doit aussi etre en utf8 ...
    http://cahnory.tumblr.com/post/17108...%C3%A7a-marche
    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 !

  14. #14
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 226
    Points : 119
    Points
    119
    Par défaut
    J'utilise l’éditeur de texte Gedit, apparemment il est configuré en UTF-8 de base.
    Mais si le fichier n'est pas en UTF-8, je ne devrais pas voir les fleches comme ça :▼ mais seulement leurs code hexa?

  15. #15
    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 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 637
    Points : 66 656
    Points
    66 656
    Billets dans le blog
    1
    Par défaut
    Essaye ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function entityForSymbolInContainer(selector) {
        var code = $(selector).text().charCodeAt(0);        
        return "&#" + code + ";";
    }
    $('#code').text(entityForSymbolInContainer("#symbol"));
    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 !

  16. #16
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 226
    Points : 119
    Points
    119
    Par défaut
    Merci de prendre le temps d'essayer de me faire comprendre =).
    J'ai fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <p id="code"> <span id="symbol">▼</span> </p>
     
    <script>
    function entityForSymbolInContainer(selector) {
        var code = $(selector).text().charCodeAt(0);        
        return "&#" + code + ";";
    }
    $('#code').text(entityForSymbolInContainer("#symbol"));
    </script>
    et j'obtiens : ▼

    Le but est de faire l'opération inverse si j'ai bien compris. On prends la flèche et on voit comment elle se traduit?
    Ici on a bien le bon code.

    C'est ça ?

  17. #17
    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 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 637
    Points : 66 656
    Points
    66 656
    Billets dans le blog
    1
    Par défaut
    Je récupère le code hexa du caractère et je l'affiche
    http://fiddle.jshell.net/gtuc7mr8/
    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 !

  18. #18
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 226
    Points : 119
    Points
    119
    Par défaut
    Oui pardon, je récupère bien le code hexa (il a été traduit dans le post).
    Du coup ça veut dire que je suis bien en UTF-8?

  19. #19
    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 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 637
    Points : 66 656
    Points
    66 656
    Billets dans le blog
    1
    Par défaut
    pas forcément ...
    ça veut dire que tu récupère bien le code du caractère
    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 !

  20. #20
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 226
    Points : 119
    Points
    119
    Par défaut
    Mais c'est ça que je ne comprends pas. Le code que j'utilise est un code UTF-8, si ma page traduit et affiche bien le symbole. Cela veut dire que mon fichier est encodé en UTF-8? Sinon il n'afficherait que le code?

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Vue non compatible avec le code du modèle associé
    Par wassimha dans le forum Débuter
    Réponses: 0
    Dernier message: 26/08/2011, 12h36
  2. Code javascript marche avec IE non plus avec firefox
    Par m3allem001 dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 19/02/2010, 12h04
  3. affichage à l'ecran non conforme avec le code
    Par abira dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 24/03/2009, 09h53
  4. bmp non visible dans un bouton avec texte
    Par CAMIC dans le forum Windows
    Réponses: 8
    Dernier message: 27/03/2007, 10h24
  5. code non managé avec interface managée ...
    Par izbad dans le forum MFC
    Réponses: 6
    Dernier message: 19/12/2005, 16h36

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