2009-10-07 7 views
2

J'ai un sélecteur jquery qui ressemble à:problème de sélection JQuery dans Internet Explorer

var val = "John's cars"; 
$('#subject input[value="'+val+'"]') 

Cela fonctionne très bien dans Firefox, Chrome, Internet Explorer 8, mais pas dans IE 6 ou IE7. Le problème est le 'dans la recherche de texte pour. Quelqu'un a une idée de comment contourner ce problème, sauf pour parcourir toutes les entrées en question et faire une comparaison de chaînes?

Répondre

4

Essayez ceci:

var val = "John's cars"; 
$('#subject input').filter(function() { 
    return this.value == val; 
}); 
+0

fonctionne comme un charme, merci –

3

Essayez d'échapper à la ' avec une barre oblique inverse

var val = "John\'s cars"; 
$('#subject input[value="'+val+'"]') 

de jQuery

caractères spéciaux dans les sélecteurs

Si vous wis h pour utiliser l'un des méta-caractères décrits ci-dessus en tant que partie littérale d'un nom, vous devez échapper le caractère avec une barre oblique inverse (). Puisque Javascript utilise la barre oblique inverse pour les séquences d'échappement dans les littéraux de chaîne , vous devez utiliser deux barres obliques inverses (\) dans les chaînes de caractères, de sorte qu'une seule barre oblique inversée sera placée dans la chaîne.

Exemple:

"#foo\\:bar" 
"#foo\\[bar\\]" 
"#foo\\.bar" 

La liste complète des caractères qui doivent à échapper: #;&,.+*~':"!^$[]()=>|/

EDIT:

puisque la valeur est dans un chaîne littérale, il doit être à double échappement. Donc, cela fonctionne

var val = "John\\'s cars"; 
$('#subject input[value="'+val+'"]') 

Merci à bobince pour le signaler.

+0

Cela ne fait fonctionne pas (du moins pas dans IE6) –

+0

@Ulf - version de jQuery utilisez-vous? –

+0

J'utilise jQuery 1.3.2 –

0

Je parie que c'est l'apostrophe dans la valeur de la recherche - essayez échapper en utilisant

"John\'s cars" 
Questions connexes