IE feature: nicht $(‚ie[text=xyz] && $(‚ie‘).text(), sondern $(‚ie‘).html()

Ich hatte mir einen so schönen jQuery Ausdruck zusammengebaut und dann kam der Internet Explorer dazwischen :(

Generell wanderte ich durch ein paar <li>-Objekte und wollte eins von ihnen mit der Klasse aktiv hervorheben.
$(o).find('li[text=3]').addClass('aktiv');
fertig! (Firefox und Chrome Entwickler brauchen nicht mehr weiterlesen)

In jedem IE greift diese Formel aber nicht.

Also Ansatz 1:

if ($.browser.msie) {
$(o).find('li').each(function(i,u) {
if ($(u).text() == '3') $(u).addClass('aktiv');
});
} else {
$(o).find('li[text=3]'.addClass('aktiv');
}

Brachte leider auch keinen Erfolg. Auch das explizite casten des .text() Wertes brachte nichts. (Die hier gewählte ‚3‘ ist eigentlich auch eine Variable gewesen vom Typ int).

Nach vielen verschiedensten Casting fehlschlägen brachte dann .html() das gewünschte Ergebnis:

if ($.browser.msie) {
$(o).find('ul.ajax li').each(function(i,u){
if ($(u).html() == '3') $(u).addClass('aktiv');
});
} else {
$(o).find('ul.ajax a[text=3]').addClass('aktiv');
}

Das Beispiel ist ein wenig vereinfacht als der auftretende Fall und geht davon aus das im <li> Element nur Text liegt und kein markup mehr.

good to know – even better to remind!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.