241 votes

Est-il possible de supprimer des styles en ligne avec jQuery?

Un plugin jQuery applique un style en ligne ( display:block ). Je me sens paresseux et je veux le remplacer par display:none .

Quel est le meilleur moyen (paresseux)?

393voto

Joseph Silber Points 69582

Mise à jour: même si cette solution fonctionne, il y a de plus facile. Voir ci-dessous.


Voici ce que j'ai trouvé, et j'espère que cela est utile à vous ou quelqu'un d'autre:

$('#element').attr('style', function(i, style)
{
    return style.replace(/display[^;]+;?/g, '');
});

Cela permettra d'éliminer que de style en ligne.

Je ne suis pas sûr que c'est ce que tu voulais. Vous avez voulu le remplacer, qui, comme l'a souligné déjà, se fait facilement en $('#element').css('display', 'inline').

Ce que je cherchais une solution pour SUPPRIMER le style en ligne complètement. J'en ai besoin pour un plugin que j'écris où je dois mettre temporairement de certaines CSS valeurs, mais veulent pour ensuite les retirer; je veux la feuille de style afin de reprendre le contrôle. Je pourrais le faire par le stockage de l'ensemble de ses valeurs d'origine, puis de les remettre en ligne, mais cette solution se sent beaucoup plus clair pour moi.


Ici, il est en format de plugin:

(function($)
{
    $.fn.removeStyle = function(style)
    {
        var search = new RegExp(style + '[^;]+;?', 'g');

        return this.each(function()
        {
            $(this).attr('style', function(i, style)
            {
                return style.replace(search, '');
            });
        });
    };
}(jQuery));

Si vous incluez ce plugin dans la page avant de votre script, vous pouvez simplement appeler

$('#element').removeStyle('display');

et cela devrait faire l'affaire.


Mise à jour: je réalise maintenant que tout cela est vain. Vous pouvez tout simplement mis à vide:

$('#element').css('display', '');

et il va automatiquement pour vous.

Voici une citation de la documentation:

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 propriété de style. 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.

Je ne pense pas que jQuery est en train de faire de la magie ici; il semble que l' style objet ne ce mode natif.

168voto

heisenberg Points 6120

.removeAttr("style") pour se débarrasser de toute l'étiquette de style ...

.attr("style") pour tester la valeur ...

.attr("style",newValue) pour le définir sur autre chose

28voto

La façon la plus simple de supprimer les styles en ligne (générés par jQuery) serait:

 $(this).attr("style", "");
 

Le code en ligne doit disparaître et votre objet doit adapter le style prédéfini dans vos fichiers CSS.

A travaillé pour moi!

13voto

SLaks Points 391154

Vous pouvez définir le style en utilisant la méthode css jQuery:

 $('something:visible').css('display', 'none');
 

9voto

Joel Potter Points 12759

La Voie Paresseuse (qui fera que les futurs designers maudiront votre nom et vous assassineront dans votre sommeil):

 #myelement 
{
    display: none !important;
}
 

Disclaimer: Je ne préconise pas cette approche, mais c'est certainement la manière paresseuse.

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