Modifier class span

Résolu
samy -  
 samy -
Bonjour,
Je cherche à modifier la class d'un de mes span.
J'ai une liste contenant plusieurs span et je cherche à modifier la class d'un élément de ma liste quand je clique dessus.

<ul class="messagesList" id="list">
 <li id="454"><span class="from"><span id="454" class="glyphicons star"></span>
 <li id="453"><span class="from"><span id="453" class="glyphicons star"></span>
 <li id="452"><span class="from"><span id="452" class="glyphicons star"></span>
 <li id="451"><span class="from"><span id="451" class="glyphicons star"></span>
</ul>


J'aimerais modifier glyphicons star par glyphicons dislikes, j'ai essayé ça mais ça ne marche pas correctement

$('#list').on('click', 'li', function() {
                var id = $(this).attr('id');
                $('#' + id).toggleClass('glyphicons dislikes');
}); 


4 réponses

  1. Nexii Messages postés 365 Statut Membre 591
     
    Bonjour,

    Vous n'agissez pas sur le bon élément.

    - Premièrement fermez correctement vos balises <span> et <li>.
    - Ensuite il faut donc que la fonction soit déclarer dans une méthode onload (document ready avec jQuery).

    Voici le code :
    $( document ).ready(function() {
              // On cible le span 
    	  $('#list li .glyphicons').click(function() {
                    // Retire la class "star"
    		$(this).toggleClass( "star" );
                    // Ajoute la classe "dislikes"
    		$(this).toggleClass( "dislikes" );
    	 }); 
    });
    
    1
  2. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
     
    Bonjour,

    Et que donne ceci :

    $('#list').on('click', 'li', function() {
          var id = $(this).attr('id');
          $("#"+id).toggleClass('glyphicons star');
          $("#"+id).toggleClass('glyphicons dislikes');  
    }); 
    

    0
    1. samy
       
      ça ne change rien, par contre $("#"+id).toggleClass('glyphicons dislikes'); seul m'affiche bien l'icône que je veux cependant l'ancien n'est pas remplacé
      0
      1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832 > samy
         
        Au pire , fais un REMOVE ADD

        Par exemple :
        var classToRemove;
        var classToAdd ;
        if( $('#'+id).hasClass('glyphicons star')){
          classToRemove = 'glyphicons star';
          classToAdd    = 'glyphicons dislikes';
        }else{
          classToRemove = 'glyphicons dislikes';
          classToAdd    = 'glyphicons star';
        }
         $("#"+id).removeClass(classToRemove);
         $("#"+id).toggleClass(classToAdd); 
        
        0
  3. Pitet Messages postés 2845 Statut Membre 530
     
    Salut,

    Plusieurs remarques :
    - le code html n'est pas correct, les balises span .from et li ne sont pas fermées
    - dans le code javascript, il faut cibler le span qui possède la classe .glyphicons, pour l'instant tu cible la balise li
    - sauf erreur de ma part, les classes glyphicons doivent être écrites sous la forme "glyphicons glyphicons-star"

    Soit :
    <ul class="messagesList" id="list">
     <li id="454"><span class="from"><span id="454" class="glyphicons glyphicons-star"></span></span></li>
     <li id="453"><span class="from"><span id="453" class="glyphicons glyphicons-star"></span></span></li>
     <li id="452"><span class="from"><span id="452" class="glyphicons glyphicons-star"></span></span></li>
     <li id="451"><span class="from"><span id="451" class="glyphicons glyphicons-star"></span></span></li>
    </ul>
    


    $('#list').on('click', 'li', function() {
        var span = $('.glyphicons', this); // on cible la balise avec la classe .glyphicons dans la balise li cliquée (this)
        span.toggleClass('glyphicons-star');
        span.toggleClass('glyphicons-dislikes');
    });
    


    Bonne journée
    0
  4. samy
     
    Merci à vous tous pour votre aide, mon problème est résolu
    0