2012-02-06 10 views
5

Ho bisogno di creare dinamicamente i miei stili CSS per i miei elementi. Tuttavia, ho bisogno di avere: dopo in CSS e ho sentito che non è possibile modificare questo in jQuery.Creazione di CSS: dopo con jQuery

È vero? C'è un modo per aggirare questo?

risposta

15

È possibile generare un tag <style> e inserirla nel <head>:

http://jsfiddle.net/PrBHF/

$("head").append($('<style>div:after { content: " World" }</style>')); 
+0

Questo non funziona in tutti i browser, specialmente Internet Explorer. – ShankarSangoli

+0

Qui ci sono metodi alternativi: http://stackoverflow.com/questions/311052/setting-css-pseudo-class-rules-from-javascript – thirtydot

+0

@ShankarSangoli: questa risposta funziona in IE8/9. Non funziona in nessuna versione inferiore a causa di ': after' non supportato. – thirtydot

5

È vero?

Sì. Gli pseudo-elementi creati con non fanno parte del DOM e, pertanto, non possono essere selezionati.

C'è comunque intorno a questo?

No. A meno che non lo si fa senza :after (utilizzare un elemento reale, quindi è possibile selezionarlo/legano gli eventi ad esso).

Modifica

Dopo aver riletto la tua domanda, penso che in realtà stai chiedendo se è possibile applicare :after stili per un elemento con jQuery. La risposta è ancora no, sebbene sia possibile usare addClass per aggiungere una nuova classe all'elemento e definire gli stili :after per quel nome di classe.

modificare nuovamente

Quando ho detto "no", sembra che io non sono del tutto corretto ... vedi @AtesGorals risposta per una bella soluzione.

5

Perché creare css utilizzando javascrript?

Avere gli stili richiesti in una classe css e quindi applicare la classe utilizzando jQuery utilizzando il metodo addClass.

Problemi correlati