146 votes

jquery ID avec des espaces

Personne ne sait comment sélectionner un élément dans le DOM par ID avec jQuery, lorsque que les ID d'un espace?

Par exemple, l'ID de mon article serait

<div id="content Module">Stuff</div>

Comment puis-je sélectionner avec jQuery?

Si je ne l'

$("#content Module").whatever() 

jQuery va essayer de trouver un élément à la fois avec l'ID de contenu et de l'ID du Module, ce qui n'est pas ce que je recherche.

Je dois ajouter que je suis en train de travailler avec une vieille base de code où ces deux mots identifiants sont utilisés largement, le fait de poursuivre et de changer tous les Id serait mauvais.

283voto

Elliot Nelson Points 4212

Utilisez un sélecteur d'attribut.

 $("[id='content Module']").whatever();
 

Ou mieux, spécifiez également le tag:

 $("div[id='content Module']").whatever();
 

Notez que contrairement à $ ('# id'), cela retournera plusieurs éléments si vous avez plusieurs éléments avec le même identifiant dans votre page.

69voto

Glavić Points 13021

N'utilisez pas d'espaces, la raison est simple, le caractère espace n'est pas valide pour l'attribut ID.

ID de jeton doit commencer par une lettre ([A-Za-z]) et peut être suivi par n'importe quel nombre de lettres, de chiffres ([0-9]), les traits d'union ("-"), des traits de soulignement ("_"), deux-points ( " :") et des points (".").

Mais si vous n'avez pas de soins sur les normes essayez $("[id='content Module']")

Fil similaire > Quelles sont les valeurs valides pour l'attribut id dans le HTML?

Edit: Comment id diffère entre HTML 4.01 et HTML5

Le HTML5 se débarrasser des restrictions supplémentaires sur l'attribut id. L' seules les exigences de gauche en plus d'être unique dans le document sont que la valeur doit contenir au moins un caractère (ne peut pas être vide), et qu'il ne peut pas contenir les caractères d'espace.

Lien: http://mathiasbynens.be/notes/html5-id-class

34voto

Morgon Points 1655

Juste au cas où quelqu'un serait curieux, j'ai découvert qu'échapper à cet espace fonctionnerait, et fonctionnerait probablement mieux. Ceci est particulièrement utile lorsque vous n'avez pas le contrôle sur le DOM cible (c'est-à-dire un script utilisateur):

 $("#this\\ has\\ spaces");
 

Notez la double barre oblique inverse, qui est requise.

9voto

ceejayoz Points 85962

La méthode suggérée par Chris peut probablement être adaptée pour fonctionner avec les fonctions jQuery.

 var element = document.getElementById('content Module');
$(element) ... ;
 

2voto

Chris Klepeis Points 4292

Une idée à essayer:

 $("#content" + &amp;#032; + "Module").whatever()

$("#content" + %20 + "Module").whatever()
 

Le point-virgule peut provoquer une erreur javascript. Je recommande également de changer l'ID pour ne pas avoir d'espaces.

Aussi, essayez document.getElementByID("content Module")

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X