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!
À 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>
.
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.
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!
Essaye ça:
$('#element').css('background-color', 'inherit');
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.