2009-05-30 3 views
2

Ich mag den + Selektor und möchte nicht eine andere CSS-Regel nur für eine IE6 Workaround hinzufügen. So gibt es einen jquery-Weg, um alle vorhandenen CSS-Regeln zu überprüfen, wenn es den Selektor + verwendet und dann das Element zu ändern.Implementieren + Selektor für IE6

Etwas wie folgt aus:

if (IE6) 
    for (var rule in $.cssrules) 
    if (rule.selector.find('+')) 
     $(rule).style = rule.style; // here the + selector works even for IE6 because jquery emulates it. 

So ist die grundlegende Frage ist: kann ich ein Array (oder etwas anderes) aller CSS-Regeln im Dokument definiert werden?

Cheers, Manuel

Antwort

0

Es gibt eine Möglichkeit, das zu tun. In der Tat, eine JavaScript-Bibliothek namens IE7 tut dies bereits und vieles mehr - es ermöglicht die meisten CSS-Selektoren in Internet Explorer 6 und sogar 5: http://code.google.com/p/ie7-js/.
Ich sollte sagen, ich habe es nicht selbst benutzt, aber ich habe gute Sache darüber gehört.

+0

Das ist cool: IE 5/6 hat eine cssText-Eigenschaft (http://javascript.gakaa.com/stylesheet-csstext.aspx), auf der diese Bibliothek basiert. Danke! –

0

Wenn Sie die Regel über eine Klasse anwenden, vielleicht könnten Sie die Attribute auf einem bekannten Element inspizieren sie angewendet werden sollten und sehen, ob es angewendet wurde?

0

Was Sie tun können, ist so etwas wie dieses:

Verwenden Sie Ihre normale alles-aber-IE6 CSS-Regel, dann aber auch eine andere Klasse mit den gleichen Stile erstellen:

/* CSS */ 
.myNormal + .cssRule + strong, 
.myOverrideClass { 
    color: #f0f; 
} 

Und dann, mit jQuery, gelten die Überschreibung Klasse auf die Elemente von Ihrem normalen CSS-Selektor angepasst:

$('.myNormal + .cssRule + strong').addClass('myOverrideClass'); 

dieser Methode die einzige Art, wie jemand nicht die Stile bekommen ist, wenn sie auf IE sind 6 mit Javascript deaktiviert. Benutzer ohne Javascript in anderen Browsern sind nicht betroffen.