104 votes

Comment désélectionner l'attribut CSS d'un élément à l'aide de jQuery?

Si j'ai mis une valeur CSS sur un élément spécifique à l'aide de:

$('#element').css('background-color', '#ccc');

Je veux être en mesure de désactiver cet élément spécifique de la valeur et de l'utilisation de la cascade de la valeur, le long des lignes de:

$('#element').css('background-color', null);

Mais cette syntaxe ne semble pas fonctionner -- est-ce possible d'utiliser une autre syntaxe?

Merci à l'avance!

Edit: La valeur n'est pas héritée de l'élément parent -- les valeurs d'origine provient d'un élément au niveau du sélecteur. Désolé pour la confusion!

159voto

Glenn Moss Points 2363

À partir du jQuery docs:

Réglage de la valeur d'une propriété de style à une chaîne vide - par exemple, $('#mydiv').css('color', '') - supprime la propriété d'un élément si elle a déjà été appliquée directement, que ce soit dans l'attribut de style HTML, par le biais de jQuery .css() méthode, ou par l'intermédiaire direct de manipulation du DOM de la style de la propriété. Il n'est pas, cependant, de supprimer un style qui a été appliquée avec une règle CSS dans une feuille de style ou <style> élément.

18voto

FryGuy Points 5999

Je pense que vous pouvez aussi faire:

 $('#element').css('background-color', '');
 

C'est ce que je faisais il y a longtemps pour la propriété display de plain-old-javascript afin d'afficher / masquer un champ.

5voto

cdleary Points 18869

En fait, la syntaxe que je pensais incorrecte (avec null ) semble fonctionner - mon sélecteur était juste incorrectement formé et ne donnait donc aucun élément. D'oh!

5voto

HectorMac Points 3961

Essaye ça:

 $('#element').css('background-color', 'inherit');
 

0voto

brandonhill Points 161

Pour ce que cela vaut, cela ne semble pas fonctionner dans IE 8 pour 'filter', je devais utiliser ceci (dans fadeIn callback):

$(this).attr('style', $(this).attr('style').replace(/\bfilter:\s*;*/, ''));

De toute évidence, j'avais besoin de supprimer une déclaration de filtre en ligne vide pour que le CSS puisse prendre effet; il y avait d'autres règles en ligne, donc je ne pouvais pas simplement supprimer l'attribut style.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X