CSS / jquery si() css effet
Pas sûr de savoir pourquoi cela ne fonctionne pas...
J'ai plusieurs DIVs avec une classe de .rightColumnButton. Quelques-uns d'entre eux ont une hauteur de 30px:
.rightColumnButton{
height:30px;
width:206px;
margin-top:20px;
}
Je veux changer le margin-top de 10px si elles ont une hauteur de 30px:
$(function(){
if($( '.rightColumnButton' ).css("height") == "30"){
$(this).animate({marginTop: "10px"}, 500);
}
} );
Ne fonctionne pas pour moi.
Vous devez vous connecter pour publier un commentaire.
À l'aide de
css('height')
renvoie également à l'unité, qui est généralement "px". Donc dans ce cas, vous êtes en comparant'30px' == '30'
. Utiliser leheight()
méthode qui renvoie une valeur numérique et de la comparer à un entier.Aussi, vous ne spécifiez pas ce que l'objet que vous souhaitez animer, en tant que l'élément n'est pas se "portés" à l'intérieur de la
if
clause. Utiliser leeach()
méthode sur l'élément pour créer une fermeture:MODIFIER
Au lieu de l'écrire dans les commentaires, je pensais que je voudrais éclaircir moi-même ici. Je suppose que votre point est d'animer tous les éléments qui ont une hauteur de 30px. Dans votre post original, vous avez eu ce:
Qui ne sélectionner tout".rightColumnButtons' d'accord, mais lorsque vous utilisez le
css("height")
appel, vous obtenez seulement la hauteur du premier élément. Si votre code a bien travaillé, il aurait animé tous les divs que si la première div avait une hauteur de 30px.C'est là que le
each()
méthode est très pratique. Il parcourt tous les éléments de la sélection et compare les hauteurs indépendamment les uns des autres et anime si nécessaire.each
méthode passe en boucle sur tous les éléments qui ont la classe rightColumnButton', de sorte qu'il vérifie tous les d'entre eux.la
css()
méthode retourne une chaîne de caractères avec des unités, dans votre cas "30px';Donc vous devez vérifier pour
ou de l'utilisation de la hauteur() fonction:
Vous devez également définir
this
avant d'animer.this
n'est pas spécifiéeach
au lieu deforeach
🙂Comment à ce sujet ?
Si cela ne fonctionne pas, essayez de mettre une alerte pour le contenu de :
... et coller le résultat ici.
Je pense que le problème est que le $('rightColumnButton').css... retourne une collection de valeurs, et votre si est comaring qu'à 30.
Essayer quelque chose comme ceci à la place: