Problème avec .attr()

Résolu
Bonjour,

Lorsque j'essai de récupérer un attribut d'un élément à l'aide de la méthode .attr(), ça me retourne un String contenant cette valeur.
Je stocke alors cette valeur dans une variable (classe).

Le problème est que quand je veux faire ça :

if(classe=='a'){
...
}

la condition ne passe pas.

Une idée ? Merci de votre aide :)

2 réponses

  1. Bonjour

    Je suppose que tu as déjà vérifié si ce n'était pas un problème de portée de ta variable classe.
    Il faudrait que tu nous donnes un peu plus de code, et éventuellement que tu rajoutes un "else" pour vérifier que tu y passes bien, car c'est peut-être tout une partie de ton code qui est ignorée.
    Tu peux aussi ajouter un alert (classe); juste avant ton if, pour voir.
    0
    1. Ce n'est pas un problème de portée (la variable est déclarée juste au dessus), il y a un else, et ce qui est dedans s'exécute, le alert(classe) affiche "a" (le contenu de la classe);

      $('.menu-item').click(function(){
      		$('.menu-item').each(function(){
      			if($(this).hasClass('enabled')){
      				$(this).removeClass('enabled');
      			}
      		});
      		$(this).addClass('enabled');
      		var classe = $(this).attr('class');
      		classe = classe.replace('menu-item','');
      		classe = classe.replace('enabled','');
      		if(classe == "a") {
      			console.log('debug');
      			a.fadeIn();
      		}/*
      		else if(classe == 'b') {
      			b.fadeIn();
      			console.log('debug');
      
      		}
      		else if(classe == 'c') {
      			console.log('debug');
      
      			c.fadeIn();
      		}
      		else if(classe == 'd') {
      			console.log('debug');
      
      			d.fadeIn();
      		}*/
      		else {
      			console.log('error');
      		}
      	});
      
      0
  2. Si tu fais un alert(classe) immédiatement après
    classe = classe.replace('enabled','');
    , je suppose que tu récupères une liste de classes, et que tu élimines celles qui ne t'intéressent pas avec tes 'classe.replace' ?
    Si c'est bien ça, il doit te rester les espaces qu'il y avait entre les différentes classes. As-tu essayé
    alert (classe.length);
    juste avant le if ? Au lieu du 1 qu'il y aurait s'il y avait seulement 'a', je parie que tu vas trouver 3 ou 4.
    0
    1. Parmi les solutions, tu peux faire le test avec classe.trim() qui enlève les espaces en début et en fin de chaîne.
      0
    2. Le problème venait effectivement de ça, merci de votre aide !
      0
    3. De rien :-)
      0