À ma connaissance, il n'y a pas de moyen jQuery de le faire. Il pourrait y avoir un plugin jQuery pour cela mais je ne sais pas.
Essentiellement, ce que vous essayez d'accomplir dans votre première question est possible en utilisant la propriété styleSheets
de l'objet document
. C'est un peu plus compliqué que cela car vous devez parcourir une chaîne d'objets plutôt profonde, mais cela fonctionne néanmoins dans tous les principaux navigateurs, y compris Internet Explorer 6. Ci-dessous se trouve une preuve de concept. Le CSS est à l'intérieur d'une balise STYLE, mais fonctionne aussi bien avec un CSS externe. Je vous laisse faire les abstractions.
Preuve de concept
.classname {
color: red;
font-size: 14px;
}
window.onload = function() {
document.getElementById("button").onclick = function() {
var ss = document.styleSheets;
for (var i=0; i<ss.length; i++) {
var rules = ss[i].cssRules || ss[i].rules;
for (var j=0; j<rules.length; j++) {
if (rules[j].selectorText === ".classname") {
rules[j].style.color = "green";
}
}
}
};
}
Some red text
Make text green
Pour votre deuxième question, je n'ai pas le temps d'écrire une solution mais cela impliquerait de lire les déclarations CSS comme ci-dessus et d'utiliser la propriété cssText
d'un objet CssRule afin de construire une chaîne qui sera éventuellement envoyée au serveur en utilisant une requête POST Ajax. Le côté serveur est de votre ressort.
Références:
J'espère que cela vous aide