2009-05-22 6 views
2

J'ai quelques éléments avec (.) Points en eux et je dois les sélectionner mais j'ai besoin de caractères d'échappement pour le faire, je crois. Comment puis-je être sûr que ma chaîne qui peut avoir un point sera échappée correctement. Quelque chose comme ça je suppose?Remplacer toutes (.) Périodes avec des barres obliques inverses afin que je puisse sélectionner des éléments

var title = "User1.Title"; 
var string = //replace any periods with escape sequence? 
$('#'+string).show(); 

Il peut avoir plus d'un (.) Période, je l'espère pas, mais si je peux remplacer tous (.) Périodes pour que je puisse faire ma sélection, ce serait génial.

Répondre

6

Voulez-vous dire cela?

$('#'+string.replace(/\./g, "\\.")).show(); 
+0

'string.replace (". "," \\. ")' Ne remplace que la première période de votre chaîne. Pour les remplacer, utilisez 's.replace (/\./g," \\. ")'. Ensuite, des trucs comme "User1.Title.Subtitle" fonctionnent. –

+0

@TimBartsch Vous avez raison, merci. – Gumbo

1

Cela fonctionne:

$("[id='"+string+"']").show() 

pas besoin d'y échapper si vous spécifiez comme une propriété - jquery parse différemment.

+0

Vous étiez proche, @duckyflip, mais ce n'est pas seulement un identifiant. jquery analyse la chaîne de n'importe quelle propriété différemment. Vous avez oublié les guillemets autour de la chaîne. – Will

3

Vous pouvez le faire ...

$("[id="+string+"]").show(); 

... mais le problème avec ce gars-là est c'est pas rapide car elle traverse l'ensemble de l'arborescence DOM à la recherche de tous les gars avec cet identifiant, pas seulement un.

Vous pouvez aussi le faire ...

$('#'+string.replace(".", "\\.")).show(); 

.. que jQuery pré-analyser ce sélecteur et utiliser document.getElementById dans les coulisses.

Vous pouvez aussi le faire

$(document.getElementById(string)).show(); 

... Wich yelds le même effet et vous n'avez pas à vous soucier des caractères spéciaux CSS. Soyez prudent avec IE (6 et 7) et Opera qui sélectionne les éléments non seulement par son ID, mais aussi par son nom.

+0

J'ai trouvé la première solution ici travaillée pour moi. n combinaisons d'échappements et de remplacements ne fonctionnaient pas lors de l'ajustement des propriétés CSS à l'aide de jQuery. – Prinsig

Questions connexes