Est-ce que quelqu'un sait comment sélectionner un élément dans le DOM par ID avec jQuery, lorsque cet ID a un espace?
Par exemple, l'ID de mon article serait
<div id="content Module">Stuff</div>
Comment le sélectionnerais-je avec jQuery?
Si je fais juste
$("#content Module").whatever()
jQuery essaiera de trouver un élément avec à la fois l'ID du contenu et l'ID du module, ce qui n'est pas ce que je recherche.
Je devrais ajouter que je travaille avec une ancienne base de code où ces deux identifiants de mot sont largement utilisés, donc passer en revue et changer tous les identifiants serait mauvais.
Réponses:
Utilisez un sélecteur d'attribut.
Ou, mieux, spécifiez également la balise:
Notez que contrairement à $ ('# id'), cela renverra plusieurs éléments si vous avez plusieurs éléments avec le même identifiant dans votre page.
la source
N'utilisez pas d'espaces, la raison en est simple, le caractère espace n'est pas un attribut valide pour ID.
Mais si vous ne vous souciez pas des normes, essayez
$("[id='content Module']")
Sujet similaire> Quelles sont les valeurs valides pour l'attribut id en HTML?
Edit: Comment l'ID diffère entre HTML 4.01 et HTML5
Lien: http://mathiasbynens.be/notes/html5-id-class
la source
Juste au cas où quelqu'un serait curieux, j'ai trouvé que s'échapper de l'espace fonctionnera. Ceci est particulièrement utile lorsque vous n'avez pas de contrôle sur le DOM cible (par exemple à partir d'un script utilisateur):
Notez la double barre oblique inverse, qui est obligatoire.
la source
La méthode suggérée par Chris peut probablement être adaptée pour fonctionner avec les fonctions jQuery.
la source
Une idée à essayer:
Le point-virgule peut provoquer une erreur javascript. Je recommande également de changer l'ID pour ne pas avoir d'espace.
Essayez aussi
document.getElementByID("content Module")
la source
$(document.getElementByID("content Module"))
vous donnerait pas un objet jquery?Cela a fonctionné pour moi.
la source
Bien qu'il soit techniquement invalide d'avoir un espace dans une valeur d'attribut ID en HTML , vous pouvez en fait le sélectionner à l'aide de jQuery.
Voir http://mothereffingcssescapes.com/#content%20module :
jQuery utilise une syntaxe semblable à l'API Selectors, vous pouvez donc l'utiliser
$('#content\\ module');
pour sélectionner l'élément avecid="content module"
.Pour cibler l'élément en CSS, vous pouvez l'échapper comme ceci:
la source
cela peut fonctionner si vous voulez que l'élément ait la valeur exacte de l'id
mais si vous voulez vérifier si l'élément n'a qu'un seul d'entre eux (tout comme la classe) avec ou sans autres identifiants
cela sélectionnera l'élément s'il a
id="content"
ouid="content Module"
ouid="content Module other_ids"
la source
J'ai trouvé pour mon cas que l'évasion ne fonctionnait pas car elle remplace les espaces par% 20. J'ai utilisé replace à la place, par exemple, pour remplacer le h1 de la page par le texte d'un élément de liste. Si le menu contient:
la source
J'avais des problèmes avec les identifiants d'élément contenant des virgules et / ou des espaces dans jQuery, alors j'ai fait cela et cela a fonctionné comme un charme:
var ele = $(document.getElementById('last, first'));
Cela a des espaces et ne fonctionne pas:
var ele = $('#last, first');
Cela a une virgule et ne fonctionne pas:
var ele = $('#last,first');
la source
Échapper à tout caractère divers sur le sélecteur (avec des espaces) .
la source