Problème avec .attr()

Résolu/Fermé
tete0148 Messages postés 413 Date d'inscription mercredi 19 décembre 2012 Statut Membre Dernière intervention 15 juin 2017 - 10 août 2014 à 22:40
 Utilisateur anonyme - 10 août 2014 à 23:35
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

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 mercredi 19 décembre 2012 Statut Membre Dernière intervention 15 juin 2017 89
10 août 2014 à 23:05
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
10 août 2014 à 23:20
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
10 août 2014 à 23:25
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 mercredi 19 décembre 2012 Statut Membre Dernière intervention 15 juin 2017 89
10 août 2014 à 23:32
Le problème venait effectivement de ça, merci de votre aide !
0
Utilisateur anonyme
10 août 2014 à 23:35
De rien :-)
0