könnten Sie
versuchen so etwas wie CSS-Selektoren in seiner Funktion
$()
$(document.getElementById('j_idt8:beginDateTxt')).mobiscroll().date({theme: 'android-ics light', mode:'scroller', display: 'bottom'});
Allgemein jQuery verwendet. In einem CSS-Selektor bezeichnet :
eine Pseudo-Klasse. In Ihrem Fall ist die :
nur ein Teil der ID.
Wenn Sie das generische getElementById()
verwenden, ist das Argument nicht zerlegt, aber als eine ID insgesamt gesehen. Indem Sie also getElementById()
verwenden und das Ergebnis mit $()
umhüllen, können Sie dieses "Missverständnis" umgehen.
Im Allgemeinen, aber ich denke, es wäre besser, das Namespacing-Schema in Ihrem JSF zu ändern.
EDIT
Die jQuery documentation on selectors besagt, dass Sie durch die Verwendung von \\
Sonderzeichen entkommen sollte:
To use any of the meta-characters (such as !"#$%&'()*+,./:;<=>[email protected][]^`{|}~) as a literal part of a name, it must be escaped with with two backslashes: \. For example, an element with id="foo.bar"
, can use the selector $("#foo\\.bar")
.
Dieses bereits von Daniel gegeben, um die Antwort führt, die meiner Meinung nach in überlegen ist zu der Antwort oben gegeben. Die Erklärung bleibt jedoch gültig.
$("#j_idt8\\:beginDateTxt").mobiscroll().date({theme: 'android-ics light', mode:'scroller', display: 'bottom'});
genau ist es! thx – user2294016
Ich dachte, wir verwenden jQuery Selektor, so dass wir nicht getElementById verwenden – AaA
@BobSort Das Problem hier war, dass die ID enthalten ein ':', was jQuery denken, eine Pseudo-Klasse verwendet wird und im Ergebnis fehlschlagen. Um zu umgehen, habe ich 'getElementById()' verwendet, das sein Argument nur als String interpretiert. – Sirko