Es gibt DOM-Zugriff auf Stylesheets, aber das ist eines dieser Dinge, die wir vermeiden möchten, weil IE eine Menge Kompatibilität benötigt.
Eine bessere Möglichkeit wäre typischerweise die Änderung indirekt auslösen, einen einfachen Klassenwechsel auf einem Vorfahren mit:
td { padding: 0.2em 1.2em }
body.changed td { padding: 0.32em 2em }
Jetzt nur $('body').addClass('changed')
und die all td
s Update.
Wenn Sie wirklich müssen die Stylesheets frob:
var sheet= document.styleSheets[0];
var rules= 'cssRules' in sheet? sheet.cssRules : sheet.rules; // IE compatibility
rules[0].style.padding= '0.32em 2em';
Dies setzt voraus, dass die td
betreffende Regel im ersten Sheet die erste Regel ist. Wenn nicht, müssen Sie möglicherweise danach suchen, indem Sie die Regeln nach dem richtigen selectorText suchen. Oder einfach nur eine neue Regel am Ende hinzufügen, überschreibt die alten:
if ('insertRule' in sheet)
sheet.insertRule('td { padding: 0.32em 2em }', rules.length);
else // IE compatibility
sheet.addRule('td', 'padding: 0.32em 2em', rules.length);
jQuery selbst nicht gibt Ihnen spezielle Werkzeuge, um Stylesheets zugreifen, aber es ist möglich, es gibt Plugins, die könnten.
Es ist erwähnenswert, dass IE (incl. IE10) das ursprüngliche 'selectorText' nicht bewahrt. Etwas, das im CSS-Stylesheet als '.foo.bar' geschrieben wurde, könnte im DOM-Regelobjekt als' .bar.foo' enden. Dies macht die "Suche nach dem richtigen Selektortext" außerordentlich spröde. – Tomalak
@Tomalak: Richtig - und tatsächlich gibt es in der Spezifikation für 'selectorText' keine Anforderung, die genau die gleiche Zeichenfolge wie die ursprüngliche Auswahl enthält. Es ist das gleiche wie "innerHTML" - der Parser wandelt die Quelle in eine Menge von Objekten um und das Lesen der Eigenschaft führt zu einer Serialisierung, bei der es sich um die Textdarstellung handelt, die die Informationen des Browsers widerspiegelt, aber um eine Serialisierung garantiert gleich wie die Quelle. Folglich ist die Suche nach genauem 'selectorText' von Natur aus unzuverlässig. – bobince
Der beste Teil dieser Antwort ist: "Ein besserer Weg ... Klassenwechsel auf einem Vorfahren" –