Comment puis-je supprimer un style ajouté.css() la fonction?

je change CSS avec jQuery et je souhaite supprimer le style que j'ajoute basé sur la valeur d'entrée:

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

Comment faire? Notez que la ligne ci-dessus s'exécute chaque fois que la couleur est sélectionné à l'aide du sélecteur de couleur (ie. lorsque la souris se déplace sur une roue de couleur).

2nd note: Je ne peux pas faire cela avec css("background-color", "none") parce qu'il va supprimer le style par défaut à partir des fichiers css. Je veux juste supprimer le background-color style inline ajouté par jQuery.

745
demandé sur isherwood 2010-10-27 23:21:10

16 réponses

changer la propriété en une chaîne vide semble faire le travail.

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

1176
répondu 2015-03-19 19:05:12

Les accepté de répondre fonctionne, mais laisse un vide style attribut sur le DOM dans mes tests. Pas grand chose, mais ça enlève tout:

removeAttr( 'style' );

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

498
répondu ThinkingStiff 2017-05-23 12:02:48

il y a plusieurs façons de supprimer une propriété CSS en utilisant jQuery:

1. Paramétrage de la propriété CSS à sa valeur par défaut (initiale)

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

voir la valeur initiale de la propriété CSS à MDN . Ici, la valeur par défaut est transparent . Vous pouvez également utiliser inherit pour plusieurs propriétés CSS pour hériter l'attribut de son parent. En CSS3/ CSS4, vous peut également utiliser initial , revert ou unset mais ces mots-clés peuvent avoir une prise en charge limitée du navigateur.

2. Suppression de la propriété CSS

une chaîne vide supprime la propriété CSS, i.e.

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

mais attention, comme spécifié dans jQuery .CSS () documentation , ce qui supprime le propriété mais il a des problèmes de compatibilité avec IE8 pour certaines propriétés CSS de sténographie, y compris background .

définir la valeur d'une propriété style à une chaîne vide-p.ex. $('#mydiv').css ('color',") - supprime cette propriété d'un élément si elle a déjà été appliquée directement, que ce soit dans le style HTML attribut, par jQuery .méthode css (), ou par DOM direct manipulation de la propriété style. Il n' pas, cependant, enlever un style qui a été appliqué avec une règle CSS dans une feuille de style ou élément. Attention: une exception notable est que, pour IE 8 et moins, enlever une propriété de sténographie comme border ou background supprimez entièrement ce style de l'élément, peu importe ce qui est défini dans une feuille de style ou un élément .

3. Suppression de tout le style de l'élément

.removeAttr("style")
156
répondu KrisWebDev 2016-01-23 17:52:29

j'ai eu le moyen de supprimer un attribut de style avec JavaScript pur juste pour vous faire savoir la façon de JavaScript pur

var bodyStyle = document.body.style;
if (bodyStyle.removeAttribute)
    bodyStyle.removeAttribute('background-color');
else        
    bodyStyle.removeProperty('background-color');
43
répondu Marwan 2016-11-28 22:33:35

l'une ou l'autre de ces fonctions devrait fonctionner:

$("#element").removeAttr("style");
$("#element").removeAttr("background-color") 
15
répondu Mahesh Gaikwad 2013-08-28 14:37:24

ceci supprimera l'étiquette complète:

  $("body").removeAttr("style");
14
répondu SURJEET SINGH Bisht 2016-12-01 16:11:22

en utilisant Simplement:

$('.tag-class').removeAttr('style');

ou

$('#tag-id').removeAttr('style');
6
répondu Alberto Cerqueira 2016-12-01 16:09:37

Que Diriez-vous de quelque chose comme:

var myCss = $(element).attr('css');
myCss = myCss.replace('background-color: '+$(element).css('background-color')+';', '');
if(myCss == '') {
  $(element).removeAttr('css');
} else {
  $(element).attr('css', myCss);
}
5
répondu nclu 2012-11-27 16:11:19

essayez ceci:

$('#divID').css({"background":"none"});// remove existing

$('#divID').css({"background":"#bada55"});// add new color here.

Merci

5
répondu uihelp 2014-03-01 05:40:16

si vous utilisez le style CSS, vous pouvez utiliser:

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

et remplacer par:

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

si vous n'utilisez pas le style CSS et que vous avez un attribut dans L'élément HTML, vous pouvez utiliser:

$("#element").attr("style.background-color",color);
4
répondu Luis 2013-05-21 15:20:13

utilisez mon Plugin:

$.fn.removeCss=function(all){
        if(all===true){
            $(this).removeAttr('class');
        }
        return $(this).removeAttr('style')
    }

pour votre cas ,utilisez-le comme suit :

$(<mySelector>).removeCss();

ou

$(<mySelector>).removeCss(false);

si vous voulez supprimer aussi CSS défini dans ses classes :

$(<mySelector>).removeCss(true);
4
répondu Abdennour TOUMI 2013-05-24 06:47:16

pourquoi ne pas faire le style que vous souhaitez supprimer une classe CSS? Maintenant, vous pouvez utiliser: .removeClass() . Ceci ouvre également la possibilité d'utiliser: .toggleClass()

(suppression de la classe, si elle est présente, et l'ajouter si elle ne l'est pas.)

Ajouter / Supprimer une classe est aussi moins déroutant pour changer / dépanner lors du traitement des problèmes de mise en page (par opposition à essayer de comprendre pourquoi un style particulier a disparu.)

1
répondu Neil Girardi 2017-09-16 14:33:14

celui-ci fonctionne aussi!!

$elem.attr('style','');
0
répondu dazzafact 2014-12-11 16:32:03

C'est plus complexe que d'autres solutions, mais peut offrir plus de flexibilité dans les scénarios:

1) Faites une définition de classe pour isoler (encapsuler) le style que vous voulez appliquer/enlever sélectivement. Il peut être vide (et dans ce cas, devrait probablement être):

.myColor {}

2) utilisez ce code, basé sur la http://jsfiddle.net/kdp5V/167/ à partir de cette réponse par gilly3 :

function changeCSSRule(styleSelector,property,value) {
    for (var ssIdx = 0; ssIdx < document.styleSheets.length; ssIdx++) {
        var ss = document.styleSheets[ssIdx];
        var rules = ss.cssRules || ss.rules;
        if(rules){
            for (var ruleIdx = 0; ruleIdx < rules.length; ruleIdx++) {
                var rule = rules[ruleIdx];
                if (rule.selectorText == styleSelector) {
                    if(typeof value == 'undefined' || !value){
                        rule.style.removeProperty(property);
                    } else {
                        rule.style.setProperty(property,value);
                    }
                    return; // stops at FIRST occurrence of this styleSelector
                }
            }
        }
    }
}

exemple d'utilisation: http://jsfiddle.net/qvkwhtow/

mises en garde:

  • non soumis à des essais approfondis.
  • ne peut pas inclure !important ou d'autres directives dans la nouvelle valeur. Toute directive existante sera perdue à cause de cette manipulation.
  • ne change que l'occurrence d'un styleSelector trouvé pour la première fois. Ne pas ajouter ou supprimer des styles complets, mais cela pourrait être fait avec quelque chose de plus élaboré.
  • toutes les valeurs invalides / inutilisables seront ignorées ou jetteront l'erreur.
  • dans Chrome (au moins), Non-local (comme dans cross-site) règles CSS ne sont pas exposés par document.styleSheets objet, de sorte que cela ne fonctionnera pas sur eux. Il faudrait ajouter une dérogation locale et la manipuler, en gardant à l'esprit le comportement" first found " de ce code.
  • document.feuilles de style n'est pas particulièrement favorable à la manipulation en général, ne vous attendez pas à ce que cela fonctionne pour une utilisation agressive.

isoler le style de cette façon est ce que CSS est tout au sujet, même si manipuler il n'est pas. Manipuler les règles CSS N'est pas ce qu'est jQuery, jquery manipule des éléments DOM, et utilise des sélecteurs CSS pour le faire.

0
répondu dkloke 2017-05-23 12:18:29

Simple n'est pas cher du développement web. Je recommande d'utiliser une chaîne vide lors de la suppression d'un style particulier

$(element).style.attr = '  ';
0
répondu Victor Michael 2015-09-17 09:39:30

Essayez Cette

$(".ClassName").css('color','');
Or 
$("#Idname").css('color','');
0
répondu Basant Rules 2016-08-24 06:05:54