Nous ne pouvons pas accéder à l'élément div avec l'ID "test: abc" dans le code JS en utilisant jQuery.
<div id="test:abc">
$('#test:abc')
Cela fonctionne bien sans deux-points. Nous n'avons pas de contrôle sur la génération d'ID car elle est générée automatiquement dans les sous-formulaires de Trinidad car elle attache l'ID de sous-formulaire :
à chaque élément à l'intérieur.
Réponses:
Vous devez échapper aux deux points en utilisant deux barres obliques inverses:
la source
En bref
$(document.getElementById("test:abc"))
est ce que vous devez utiliser.Explication : Hormis le gain de vitesse (voir plus bas), il est plus facile à manipuler.
Exemple: disons que vous avez une fonction
Vitesse / synchronisation
jetez un œil à ce jsbin qui teste et compare la vitesse des méthodes de sélection des identifiants avec les deux-points
vous devez ouvrir votre console Firebug pour obtenir les résultats.
Je l'ai testé avec firefox 10 et jquery 1.7.2
en gros, j'ai fait une sélection 10'000 fois d'un div avec un deux-points dans l'id - avec les différentes méthodes pour y parvenir. Ensuite, j'ai comparé les résultats à une sélection d'identification sans deux points, les résultats sont assez surprenants.
temps gauche en ms méthode du sélecteur droit
surtout
vient un peu comme une surprise
la source
$("#annyoing\\:colon")
, 29$("[id='annyoing:colon']")
, 5$(document.getElementById("annyoing:colon"))
, 8$("#nocolon")
, 31$("[id='nocolon']")
$("#annoying\\:colon")
ou$(document.getElementById("annoying:colon"))
?Il trébuche sur les deux points, évidemment, parce que jQuery essaie de l'interpréter comme un sélecteur. Essayez d'utiliser le sélecteur d'attribut id.
la source
Je voudrais simplement utiliser
document.getElementById
et transmettre le résultat à lajQuery()
fonction.la source
utiliser deux antislash
\\
DEMO
comme écrit ici
Référence
la source
En me référant à la réponse de Toskan, j'ai mis à jour son code pour le rendre un peu plus lisible, puis je l'ai affiché sur la page.
Voici le lien jbin: http://jsbin.com/ujajuf/14/edit .
De plus, je l'ai exécuté avec plus d'itérations
Encore plus:
la source
essayez d'utiliser
$('#test\\:abc')
la source
Cette syntaxe a
$('[id="test:abc"]')
fonctionné pour moi. J'utiliseNetbeans 6.5.1
et il génère des composants avec unid
qui contient un fichier: (colon)
. J'ai essayé le\\
et le\3A
mais aucun d'entre eux n'a fonctionné.la source
Utilisez
$('[id=id:with:colon]')
.la source