web-dev-qa-db-fra.com

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

Si je définis une valeur CSS sur un élément spécifique en utilisant:

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

Je veux pouvoir annuler la définition de cette valeur spécifique à l'élément et utiliser la valeur en cascade, comme suit:

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

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

Merci d'avance!

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

78
cdleary

À partir de la documentation jQuery

Définition de la valeur d'une propriété de style sur une chaîne vide - par exemple. $('#mydiv').css('color', '') - supprime cette propriété d'un élément si elle a déjà été appliquée directement, que ce soit dans l'attribut de style HTML, via la méthode .css() de jQuery ou via une manipulation DOM directe de la propriété style. Cependant, il ne supprime pas un style qui a été appliqué avec une règle CSS dans une feuille de style ou un élément <style>.

113
Glenn Moss

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 dans plain-old-javascript pour afficher/masquer un champ.

12
FryGuy

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

4
cdleary

Essaye ça:

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

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

$(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.

0
Brandon Hill