web-dev-qa-db-fra.com

Point jQuery dans le sélecteur d'identifiant?

Duplicate possible:
Comment sélectionner les nœuds html par ID avec jquery lorsque l’ID contient un point?

J'ai un site web qui contient des éléments similaires à celui-ci:

<p id="root.SomeCoolThing">Some Cool Thing</p>

Je ne peux pas sélectionner le paragraphe avec jQuery comme $('#root.SomeCoolThing') car jQuery pense que SomeCoolThing est la classe d'un élément avec id="root".

Comment puis-je sélectionner cet élément avec jQuery? Je voudrais éviter une construction comme celle-ci:

$(document.getElementById('root.SomeCoolThing'))
122
Niklas R

Utilisez les règles d'échappement de = API de sélecteurs jQuery comme suit:

$('#root\\.SomeCoolThing') 

De la docs :

Pour utiliser n'importe lequel des méta-caractères (tels que !"#$%&'()*+,./:;<=>?@[\]^`{|}~) en tant que partie littérale d'un nom, il doit être échappé avec deux barres obliques inverses: \\. Par exemple, un élément avec id="foo.bar" Peut utiliser le sélecteur $("#foo\\.bar").

233
charlietfl

Utiliser attr fonctionne:

$('p[id="root.SomeCoolThing"]')
39
mikevoermans

Vous devez échapper des caractères spéciaux:

$('#root\\.SomeCoolThing')

docs:

Si vous souhaitez utiliser l'un des méta-caractères (tels que ! "# $% & '() * +,./:; <=>? @ [] ^` {| } ~ ) en tant que partie littérale d'un nom, vous devez échapper le caractère avec deux barres obliques inverses: \\. Par exemple, si vous avez un élément avec id = "foo.bar", vous pouvez utiliser le sélecteur $ ("# foo \\. bar").

17
gdoron
7
Carlos Quijano

Tirer de la hanche ici, mais si vous ne pouvez pas changer l'ID de l'élément, essayez d'utiliser ce sélecteur:

$("p[id=root.SomeCoolThing]")
4
BradBrening

Utilisez deux barres obliques inverses avant chaque caractère spécial

  $('#root\\.SomeCoolThing')
3
Emmanuel N