2012-02-09 12 views
5

Supponiamo di voler modificare la larghezza di molti elementi, ad esempio per simulare una tabella. Mi rendo conto che si potrebbe fare questo:Modifica della definizione della regola CSS utilizzando jQuery

$(".class").css('width', '421px'); 

Questo altera la linea style='width: 421px;' attributo per ogni elemento. Ora, quello che mi piacerebbe fare: è cambiare l'attuale definizione regola CSS:

.class { 
    width: 375px; ==[change to]==> 421px; 
} 

Quando si tratta di 100 di se non 1000 di nidificato <ul> e <li> che hanno bisogno di essere cambiato, sembra che questo sarebbe migliore per le prestazioni rispetto al tentativo di consentire a jQuery di eseguire il lavoro tramite il metodo .css().

ho trovato this example - questo è quello che sto cercando di fare:

var style = $('<style>.class { width: 421px; }</style>') 
$('html > head').append(style); 

non sto cercando di scambiare le classi ($el.removeClass().addClass()), perché non posso avere una classe per OGNI ottimale larghezza (379px, 387px, 402px ..).

Potrei creare un elemento <style> e impostare dinamicamente la larghezza, tuttavia penso che ci sia un modo migliore.

metodo
+2

Penso davvero che dovresti scrivere due classi nel tuo CSS e aggiungere/rimuovere quelle appropriate quando necessario. Non dovresti scherzare con il tuo foglio di stile in JS, diventerà rapidamente non mantenibile. – kapa

+0

@kapa, questo ha i suoi limiti, perché tutti i CSS devono essere definiti in anticipo. Ad esempio, non è possibile evidenziare elementi arbitrari di nth-child: '#root> div: nth-child ('+ Nth +') {background: red; } ' –

risposta

1

document.styleSheets [0] .addRule opere in Chrome, 'non una funzione' in FF

0

Cosa funziona per me è includere un blocco di stile vuoto nell'intestazione:

<style id="custom-styles"></style> 

E poi manipolare che con qualcosa di simile:

$('#custom-styles').text('h1 { background: red }') 

Ho provato questo sembra funzionare nella versione corrente di Chrome (o meglio, Cromo - 63,0) e Firefox (57.0.4).

Problemi correlati