Problème avec .attr()

Résolu
tete0148 Messages postés 413 Date d'inscription   Statut Membre Dernière intervention   -  
 Utilisateur anonyme -
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

Utilisateur anonyme
 
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
tete0148 Messages postés 413 Date d'inscription   Statut Membre Dernière intervention   89
 
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
Utilisateur anonyme
 
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
Utilisateur anonyme
 
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
tete0148 Messages postés 413 Date d'inscription   Statut Membre Dernière intervention   89
 
Le problème venait effectivement de ça, merci de votre aide !
0
Utilisateur anonyme
 
De rien :-)
0