1 votes

Remplacer une valeur par une image en utilisant Jquery ?

J'ai une page avec beaucoup de commentaires.

La structure du code est la suivante :

+ <li id="li-comment-65" class="comment even thread-odd thread-alt depth-1">
     <div class="comment-body">
        <div id="comment-65">
           <div class="comment-author vcard">
              <img height="30" width="30" href="" alt="" />                        
              <cite class="fn">keith</cite>                  
           </div>
           <div class="comment-meta commentmetadata">
              <a href="#">June 16, 2009 at 10:21 pm</a>
           </div>
           <div id="rating-65" class="rating-class">Excellent</div>
           <p>Hiya</p>
        </div>
     </div>
  </li>

Ce que je veux faire est le suivant :

  1. Obtenez la valeur de chaque classe de notation. (Il y aura un maximum de 5 valeurs : a. Excellent b. Très bon c. Bon d. Médiocre e. Très mauvais
  2. Si le classement == 'Excellent' - Affiche une image 5 étoiles et supprime le texte 'Excellent'.
  3. Si l'évaluation == 'Très bien' - Affichez une image 4 étoiles et supprimez le texte 'Très bien'.
  4. ...
  5. ...
  6. etc.

Est-ce difficile à faire ?

3voto

Paolo Bergantino Points 199336

Cela devrait le faire :

$('div.rating-class').each(function() {
    var value = $.trim($(this).text());
    var src;
    switch(value) {
        case 'Excellent':
            src = 'fivestars.png';
            break;
        case 'Very Good':
            src = 'fourstars.png';
            break;
        ...                     
    }
    $img = $('<img/>').attr('src', src);
    $(this).html($img);
});

Ce qui serait encore mieux, c'est de faire quelque chose comme ça :

$('div.rating-class').each(function() {
    var value = $.trim($(this).text()).replace(' ', '_').toLowerCase();
    $(this).addClass(value);
});

Et puis il y a des classes CSS comme celles-ci :

div.rating-class.excellent {
    background-image: url(fivestars.png);
    text-indent: -1000px;
}
div.rating-class.very_good {
    background-image: url(fourstars.png);
    text-indent: -1000px;
}
...

Là où l'indentation du texte cache le texte normal que vous aviez à l'origine.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X