IE6 verknüpfte Klassen

Der IE6 macht hier Probleme indem er nur die letzten beiden rating_container mit a.rating selected.gerade und ungerade nimmt.

Durch rumgoogeln bin ich draufgekommen, das er ein Problem mit verknüpften Klassen hat und hier deswegen immer nur die letzte jeweilge Klasse nimmt…

Gibt es hierfür einen BugFix bzw. kennt jemand einen Workaround!?

[HTML].rating_container a.rating_off.gerade{
background-image:url(„…/images/sterne/grau_rechts.gif“);
background-repeat: no-repeat;
width: 15px;
}
.rating_container a.rating_off.ungerade{
background-image:url(„…/images/sterne/grau_links.gif“);
}
.rating_container a.rating_on.gerade{
background-image:url(„…/images/sterne/gruen_rechts.gif“);
background-repeat: no-repeat;
width: 15px;
}
.rating_container a.rating_on.ungerade{
background-image:url(„…/images/sterne/gruen_links.gif“);
}
.rating_container a.rating_selected.gerade{
background-image:url(„…/images/sterne/gruen_rechts_blass.gif“);
background-repeat: no-repeat;
width: 15px;
}
.rating_container a.rating_selected.ungerade{
background-image:url(„…/images/sterne/gruen_links_blass.gif“);
}[/HTML]

zeig mal das html dazu.

wäre schön zu sehen wie du die klassen dann auch nutzt!
vielleicht macht diesmal ja der IE alles richtig (ich glaubs aber kaum:twisted:)

Wenn du den code zeigst, könnte man das viellecith sehen wo es einen workaround geben könnte!

Nicht ganz so leicht zu zeigen da es durch Javascript generiert wird :smiley:

[PHP]

[/PHP]

Control.Rating = Class.create({ initialize: function(container,options){ Control.Rating.instances.push(this); this.value = false; this.links = []; this.container = $(container); this.container.update(''); this.options = { min: 1, max: 10, rated: false, input: false, reverse: false, capture: true, multiple: false, classNames: { off: 'rating_off', half: 'rating_half', on: 'rating_on', selected: 'rating_selected' }, updateUrl: false, updateContainer: false, updateParameterName: 'value', afterChange: Prototype.emptyFunction };
hier steht noch einiges… was aber den ganzen Code nur unnötig lang macht… hab ich rausgeschnitten für hier…

[CODE]render: function(rating,force_selected){
(this.options.reverse ? this.links.reverse() : this.links).each(function(link,i){
if(link.value <= Math.ceil(rating)){
link.className = this.options.classNames[link.value <= rating ? ‚on‘ : ‚half‘];
if(link.value%2==0)
link.addClassName(„gerade“);
else
link.addClassName(„ungerade“);
if(this.options.rated || force_selected)
link.addClassName(this.options.classNames.selected);
}
else{
link.className = this.options.classNames.off;
if(link.value%2==0)
link.addClassName(„gerade“);
else
link.addClassName(„ungerade“);

		}
	}.bind(this));
},[/CODE]

Der IE6 unterstützt verknüpfte Klassen definitiv nicht. Aus diesem Grund musst Du für diesen Browser darauf verzichten und wirklich einzelne Klassennamen verwenden.

Was sind denn verknüpfte Klassen?

Z.B. das hier:

a.rating_on.ungerade { [Eigenschaften] }

Der Code sagt:
Die nachfolgenden Eigenschaften betreffen alle Links () die sowohl die Klasse „rating_on“ als auch „ungerade“ zugewiesen haben.

Diese Schreibweise gibt es nicht und mit multiplen Klassen hat der IE keine Probleme

Diese Schreibweise gibt es sehr wohl:
Selectors

Und welche Probleme der IE6 damit hat kannst Du hier nachlesen:
Multiple CSS-Klassenvergabe | Labuschin Webdesign

Und hier auch mal selbst testen:
Untitled Page

Oh, hab ich noch nie gesehen