2009-11-20 13 views
5

können wir inline CSS durch Javascript überschreiben? mit IE6-Kompatibilität.Wie inline CSS durch Javascript zu überschreiben?

Ich fand diese reine CSS-Lösung, aber funktioniert nicht in IE.

http://nataliejost.com/override-inline-styles-from-the-stylesheet/

http://www.sitepoint.com/blogs/2009/05/27/override-inline-css/

<div class="block"> 
    <span style="font-weight: bold; color: red;">Hello World</span> 
</div> 

können wir

.block span[style]{ 
    font-weight: normal !important; 
    color: #000 !important; 
} 

Diese Lösung Arbeit in allen großen Browsern außer IE6 diesen Inline-Stil mit dieser Lösung außer Kraft setzen.

+0

Gelöschte die [gelöst] hinter dem Titel, auf SO Fragen werden nie endgültig gelöst, es kann immer eine bessere Alternative oder eine nennenswerte Variante geben. SO ist schließlich ein Wiki. – markus

+0

ok danke für diese Info. Ich war mir über dieses Ding nicht bewusst –

Antwort

14

Natürlich können Sie von jQuery CSS() -Methode: http://docs.jquery.com/CSS/css#namevalue

Also, wenn zum Beispiel haben Sie die folgende HTML:

<p style="color:red;">A colored text</p> 

Sie die Farbe, indem Sie folgende in jQuery ändern :

$("p").css("color","blue"); 

Und es wird in IE6 arbeiten.

+0

cool! vielen Dank –

+0

und gibt es eine reine CSS-Lösung, um dies zu tun –

+0

jQuerys CSS() fügt tatsächlich Inline-CSS in das DOM. Umgekehrt ist das Überschreiben von jQuerys css() mit CSS schwieriger (es funktioniert mit! Wichtig, aber nicht in IE6) – David

3

!important funktioniert in IE6, es ist nur Ihre Wahl span[style] wird nicht, da Attributselektoren dort nicht unterstützt werden. Wenn Sie einen anderen Selektor finden, der die Spannen auswählt, die Sie überschreiben möchten, funktioniert das gut. Vielleicht reicht nur .block span?

Ansonsten ja, können Sie es von JavaScript ändern, wenn Sie absolut haben (nicht Sie keine Kontrolle über das Markup haben?):

span.style.fontWeight= 'normal'; 
span.style.color= 'black'; 
Verwandte Themen