2010-05-04 6 views
2

J'essaie d'émuler des pseudo-classes et des sélecteurs d'attributs dans Internet Explorer 6 et 7, tels que :focus, :hover ou [type=text]. Jusqu'à présent, j'ai réussi à ajouter un nom de classe aux éléments concernés:Émulation de pseudo-classes discrètes et de sélecteurs d'attribut dans IE

$("input, textarea, select") 
.hover(function(){ 
    $(this).addClass("hover"); 
}, function(){ 
    $(this).removeClass("hover"); 
}) 
.focus(function(){ 
    $(this).addClass("focus"); 
}) 
.blur(function(){ 
    $(this).removeClass("focus"); 
}); 

$("input[type=text]").each(function(){ 
    $(this).addClass("text"); 
}); 

Cependant, je suis toujours obligé de dupliquer sélecteur dans mes feuilles de style:

textarea:focus, textarea.focus{ 
} 

Et, pour les choses pires, IE6 semble ignorer tous les sélecteurs quand il trouve un attribut:

input[type=text], input.text{ 
    /* IE6 ignores this */ 
} 

Et, bien sûr, ne tient pas compte IE6 sélecteurs avec plusieurs classes:

input.text.focus{ 
    /* IE6 ignores this */ 
} 

Je suis susceptible de finir avec ce gâchis:

input[type=text]{ 
    /* Rules here */ 
} 
input.text{ 
    /* Same rules again */ 
} 
input[type=text]:focus{ 
} 
input.text_and_focus{ 
} 
input.text_and_hover{ 
} 
input.text_and_focus_and_hover{ 
} 

Ma question: est-il possible de lire les règles ou style calculé définies pour un sélecteur CSS et l'appliquer à certains éléments, donc je dois seulement maintenir un ensemble de CSS standard?

Répondre

0

Je trouve ce beau morceau de logiciel:

  • ie-css3.js CSS3 émulation de sélection pseudo-classe pour Internet Explorer 5.5 - 8

Il couvre essentiellement mes besoins (code discret cela ne nécessite pas de règles CSS spécifiques), bien qu'il n'émette pas input[type=text].

Si vous connaissez autre chose sur cette ligne, n'hésitez pas à ajouter une nouvelle réponse.

0

Si vous êtes déjà en fonction javascript avec vos styles (autrement, ni travail :focus ou .focus dans IE6), je vous conseille d'utiliser IE7.js par Dean Edwards, qui js-améliorent IE6.

http://code.google.com/p/ie7-js/

+0

J'ai utilisé cette bibliothèque il y a quelques années et c'est un peu exagéré. Il fonctionne très lentement car il est très ambitieux: il corrige des bugs de rendu et émule beaucoup de choses CSS3 dont je n'ai pas vraiment besoin. Considérant que j'utilise déjà jQuery pour la fonctionnalité du site, je suppose que IE6 pauvre ne serait pas en mesure de faire face à cela. Merci pour le conseil, de toute façon. Je pensais que IE7 avait été abandonné et je suis content de voir que ce n'est pas le cas. –

+0

J'ai utilisé 'IE7.js' avec' jQuery' avant et si votre serveur n'est pas très lent, ça marche bien - je veux dire, vous avez moins de travail, votre site est compatible IE6 et le monde est à nouveau sympa :) –