949 votes

Comment supprimer un style ajouté avec la fonction .css() ?

Je change CSS con jQuery et je souhaite supprimer le style que j'ajoute en fonction de la valeur de l'entrée :

if(color != '000000') $("body").css("background-color", color); else // remove style ?

Comment puis-je le faire ?
Notez que la ligne ci-dessus s'exécute chaque fois qu'une couleur est sélectionnée à l'aide d'un sélecteur de couleur (c'est-à-dire lorsque la souris passe sur une roue de couleur).

2ème remarque : je ne peux pas faire cela avec css("background-color", "none") parce qu'il supprimera le style par défaut de l'élément d'information. CSS des fichiers.
Je veux juste enlever le background-color style en ligne ajouté par jQuery .

1 votes

0 votes

Il vaut mieux essayer d'ajouter ou de supprimer des classes en fonction de vos besoins. Cela n'affectera pas les autres styles.

0 votes

2 façons de supprimer un style en jquery avec démo codepedia.info/jquery-remove-inline-style

1428voto

Pekka 웃 Points 249607

Le remplacement de la propriété par une chaîne vide semble faire l'affaire :

$.css("background-color", "");

5 votes

@baacke C'est une honte quand la supposée "norme" est terriblement dépassée et fait perdre beaucoup de temps de développement. J'ai peu de sympathie pour les entreprises qui choisissent d'utiliser des logiciels obsolètes, je ne vois pas pourquoi je devrais passer du temps supplémentaire à développer pour elles.

2 votes

@baacke, plus les développeurs cessent de prendre en charge IE9-, plus les utilisateurs trouveront un moyen de mettre à niveau, vers IE10 ou vers un autre navigateur. Vous leur rendez également service. Soyez le changement que vous voulez voir ;). Par ailleurs, Google a déjà cessé de prendre en charge IE9. thenextweb.com/google/2013/11/05/

3 votes

@baacke Mais pourquoi quelqu'un s'intéresserait-il à IE9- alors que Google a cessé de s'en préoccuper ? Si votre employeur l'exige vraiment, alors oui, vous n'avez pas le choix, mais ne justifiez pas sa décision :)

582voto

ThinkingStiff Points 19251

La réponse acceptée fonctionne mais laisse un vide style sur le DOM dans mes tests. Ce n'est pas grave, mais cela supprime tout :

removeAttr( 'style' );

Cela suppose que vous voulez supprimer tout le style dynamique et revenir au style de la feuille de style.

4 votes

@Tosh Ce bug a été résolu le 25/08/2011 : bugs.jquery.com/

0 votes

Je sais mais au moins dans la version 1.7 c'est toujours buggé, je n'ai pas testé la 1.8

0 votes

J'ai testé cette solution dans IE7 (via le mode de navigation IE dev tools) avec JQuery 1.10.2 et cela a fonctionné à merveille.

183voto

KrisWebDev Points 1788

Il existe plusieurs façons de supprimer une propriété CSS à l'aide de jQuery :

1. Définir la propriété CSS à sa valeur par défaut (initiale)

.css("background-color", "transparent")

Voir le valeur initiale de la propriété CSS sur MDN . Ici, la valeur par défaut est transparent . Vous pouvez également utiliser inherit pour plusieurs propriétés CSS afin d'hériter de l'attribut de son parent. En CSS3/CSS4, vous pouvez également utiliser initial , revert o unset mais ces mots-clés ne sont pas toujours pris en charge par les navigateurs.

2. Suppression de la propriété CSS

Une chaîne vide supprime la propriété CSS, à savoir

.css("background-color","")

Mais attention, comme spécifié dans Documentation de jQuery .css() cette méthode supprime la propriété, mais elle pose des problèmes de compatibilité avec IE8 pour certaines propriétés de raccourci CSS, dont les suivantes arrière-plan .

Le fait de définir 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 HTML style HTML, par la méthode .css() de jQuery ou par la manipulation directe du DOM de la propriété de style. de la propriété de style. Toutefois, elle ne supprime pas un style qui a été appliqué avec une règle CSS dans une feuille de style ou un élément élément. Avertissement : une exception notable, pour les IE 8 et inférieurs, la suppression d'une propriété de raccourci telle que border ou background supprimera entièrement ce style de l'élément, indépendamment de ce qui a été défini dans une feuille de style ou un élément .

3. Suppression de l'ensemble du style de l'élément

.removeAttr("style")

55voto

Marwan Points 1284

J'ai trouvé le moyen de supprimer un attribut de style avec du pur JavaScript, juste pour vous faire connaître le fonctionnement du pur JavaScript.

var bodyStyle = document.body.style;
if (bodyStyle.removeAttribute)
    bodyStyle.removeAttribute('background-color');
else        
    bodyStyle.removeProperty('background-color');

13 votes

Le gars utilise déjà jQuery... pourquoi s'embêter à réimplémenter une méthode multi-navigateur ! ?!?

36 votes

Parce que jquery n'est pas tout, parce qu'elle, ou peut-être devrais-je dire chacun d'entre nous, en tant que développeurs, devrait savoir ce que signifie la compatibilité et comment faire ce genre de choses avec des langages de base comme JavaScript, c'est peut-être ma théorie, j'ai déjà créé mon propre cadre à partir de ma connaissance du JavaScript de base, je refuse d'utiliser les choses des autres, j'ai mon propre concept et ma façon de penser :) et au fait, merci pour votre ( - ), j'avais juste besoin d'être une valeur ajoutée :) et aussi au fait, le gars n'est pas un gars, c'est une fille nommée Alex

1 votes

Je veux juste noter que vous ne devriez pas vérifier document.all si vous ne l'utilisez pas. Vous devriez peut-être le vérifier comme ceci : if (elm.style.removeProperty) { elm.style.removeProperty(propertyName) ; } else if (elm.style.removeAttribute) { elm.style.removeAttribute(attributeName) ; }

19voto

Mahesh Gaikwad Points 141

L'une de ces fonctions jQuery devrait fonctionner :

$("#element").removeAttr("style");
$("#element").removeAttr("background-color")

24 votes

Pour supprimer une seule propriété css : var cssObject = $('selector').prop('style'); cssObject.removeProperty('background-color');

0 votes

Igaar - votre solution est la plus élégante. Je l'ai mise dans une boucle '.each' pour un tas de cellules de tableau qui avaient "display:none" qui devait disparaître mais avec d'autres propriétés qui devaient rester. Cela a fonctionné sans problème, en supprimant simplement le display:none et en laissant le reste.

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