Wir können mit jQuery nicht auf das div-Element mit der ID "test: abc" im JS-Code zugreifen.
<div id="test:abc">
$('#test:abc')
Es funktioniert gut ohne Doppelpunkt. Wir haben keine Kontrolle über die ID-Generierung, da diese in Trinidad-Unterformularen automatisch generiert wird, da :
jedem Element darin eine Unterformular-ID zugeordnet wird .
Antworten:
Sie müssen dem Doppelpunkt mit zwei Schrägstrichen entkommen:
quelle
Zusamenfassend
$(document.getElementById("test:abc"))
ist das, was Sie verwenden sollten.Erläuterung : Abgesehen von der Geschwindigkeitssteigerung (siehe weiter unten) ist die Handhabung einfacher.
Beispiel: Angenommen, Sie haben eine Funktion
Geschwindigkeit / Timing
Schauen Sie sich diesen jsbin an, der die Geschwindigkeit der Auswahlmethoden von IDs mit Doppelpunkten testet und vergleicht
Sie müssen Ihre Firebug-Konsole öffnen, um die Ergebnisse zu erhalten.
Ich habe es mit Firefox 10 und jquery 1.7.2 getestet
Im Grunde habe ich 10'000 Mal eine Div mit einem Doppelpunkt in der ID ausgewählt - mit den verschiedenen Methoden, um dies zu erreichen. Dann habe ich die Ergebnisse mit einer ID-Auswahl ohne Doppelpunkt verglichen. Die Ergebnisse sind ziemlich überraschend.
linke Zeit in ms rechte Auswahlmethode
insbesondere
kommt ein bisschen überraschend
quelle
$("#annyoing\\:colon")
, 29$("[id='annyoing:colon']")
, 5$(document.getElementById("annyoing:colon"))
, 8$("#nocolon")
, 31$("[id='nocolon']")
$("#annoying\\:colon")
oder$(document.getElementById("annoying:colon"))
?Es stolpert offensichtlich über den Doppelpunkt, weil jQuery versucht, ihn als Selektor zu interpretieren. Versuchen Sie es mit der ID-Attributauswahl.
quelle
Ich würde nur verwenden
document.getElementById
und das Ergebnis an diejQuery()
Funktion übergeben.quelle
Verwenden Sie zwei Backslash
\\
DEMO
wie hier geschrieben
Referenz
quelle
In Bezug auf Toskans Antwort habe ich seinen Code aktualisiert, um ihn etwas lesbarer zu machen, und ihn dann auf der Seite ausgegeben.
Hier ist der jbin-Link: http://jsbin.com/ujajuf/14/edit .
Außerdem habe ich es mit mehr Iterationen ausgeführt
Sogar mehr:
quelle
versuchen Sie es mit
$('#test\\:abc')
quelle
Diese Syntax
$('[id="test:abc"]')
hat bei mir funktioniert. Ich benutzeNetbeans 6.5.1
& es generiert Komponenten mit einemid
, der a enthält: (colon)
. Ich habe das\\
& das ausprobiert,\3A
aber keiner von ihnen hat funktioniert.quelle
Verwenden Sie
$('[id=id:with:colon]')
.quelle