Je suis nouveau sur JQuery. Dans mon application, j'ai les éléments suivants:
$("#displayPanel div").live("click", function(){
$(this).css({'background-color' : 'pink', 'font-weight' : 'bolder'});
});
Lorsque je clique sur une Div, la couleur de cette Div est modifiée. Dans cette fonction Click, j'ai quelques fonctionnalités à faire. Après tout cela, je veux supprimer le Css appliqué de la Div. Comment pourrais-je le faire dans JQuery?
Réponses:
Mettez vos propriétés CSS dans une classe, puis faites quelque chose comme ceci:
Ensuite, où se trouvent vos `` autres fonctionnalités '', faites quelque chose comme:
la source
<div style="xxx"/>
c'est toujours du CSS ... ce n'est pas une très bonne façon de le faire, mais ça marche.addClass
ouremoveClass
ouremoveAttr('style')
comme dans la réponse de @ ToRrEs.Vous pouvez supprimer des css spécifiques qui se trouvent sur l'élément comme ceci:
Bien que je sois d'accord avec Karim, vous devriez probablement utiliser des classes CSS.
la source
Vous pouvez utiliser la méthode removeAttr, si vous souhaitez supprimer tout le style en ligne que vous avez ajouté manuellement avec javascript. Il vaut mieux utiliser des classes CSS mais on ne sait jamais.
la source
.css('style-name', 'style-value')
fonction de jQuery ajoute des styles en ligne à un élément - et est essentielle pour mettre à jour les styles à la volée. Un script glisser / déposer peut modifier les stylestop
etleft
d'un élément positionné de manière absolue - une instance où l'utilisation de classes n'est pas pratique.Vous pouvez supprimer les propriétés en ligne de cette façon:
Par exemple:
Ceci est essentiellement mentionné ci-dessus, et cela fait définitivement l'affaire.
BTW, cela est utile dans les cas tels que lorsque vous devez effacer un état après l'animation. Bien sûr, je pourrais écrire une demi-douzaine de classes pour gérer cela, ou je pourrais utiliser ma classe de base et #id pour faire des maths, et effacer le style en ligne appliqué par l'animation.
la source
OU
la source
À noter, en fonction de la propriété, vous pourrez peut-être le définir sur auto.
la source
Définissez la valeur par défaut, par exemple:
$ (this) .css ("hauteur", "auto");
ou dans le cas d'autres fonctionnalités CSS
$ (this) .css ("hauteur", "hériter");
la source
En fait, le meilleur moyen que j'ai trouvé pour le faire lorsque vous devez faire un style complexe basé sur jquery, par exemple, si vous avez un modal que vous devez afficher mais qu'il doit calculer les décalages de page pour obtenir les paramètres corrects dans lesquels ils devront entrer la fonction a jQuery ("x"). css ({}).
Voici donc le réglage des styles, la sortie des variables calculées en fonction de divers facteurs.
Afin d'effacer ces styles. plutôt que de définir quelque chose comme
La manière simple serait
Lorsque jquery manipule des éléments sur le dom, les styles sont écrits sur l'élément dans l'attribut "style" comme si vous écriviez les styles en ligne. Tout ce que vous avez à faire est d'effacer cet attribut et l'élément doit revenir à ses styles d'origine
J'espère que cela t'aides
la source
j'ai le même problème aussi, supprimez simplement la valeur
la source
Si vous ne voulez pas utiliser de classes (ce que vous devriez vraiment), la seule façon d'accomplir ce que vous voulez est d'enregistrer d'abord les styles modifiés:
la source
J'ai utilisé la deuxième solution de user147767
Cependant, il y a une faute de frappe ici. Ça devrait être
pas <= 0
J'ai également changé cette condition pour:
comme parfois nous ajoutons une propriété css sur jQuery, et elle est ajoutée d'une manière différente pour différents navigateurs (c'est-à-dire que la propriété border sera ajoutée en tant que "border" pour Firefox, et "border-top", "border-bottom" etc pour IE ).
la source
Avant d'ajouter une classe, vous devez vérifier si elle avait déjà une classe avec la méthode .hasClass ()
Pour votre question spécifique. Vous devriez mettre vos affaires dans la feuille de style en cascade. Il est recommandé de séparer la conception et la fonctionnalité.
la solution proposée pour ajouter et supprimer des noms de classe est donc la meilleure pratique.
cependant, lorsque vous manipulez des éléments, vous ne contrôlez pas la façon dont ils sont rendus. removeAttr ('style') est le MEILLEUR moyen de supprimer tous les styles en ligne.
la source
J'ai un peu modifié la solution de user147767 pour rendre possible l'utilisation
strings
,arrays
etobjects
en entrée:http://jsfiddle.net/ARTsinn/88mJF/
la source