私はtxtBoxを持っており、そのIDは:beginDateTxt
しかし、jsfはそれをj_idt8:beginDateTxt
jqueryで私はそのように到達しようとします
<script type="text/javascript">
$(document).ready(function() {
$(function() {
$("#j_idt8:beginDateTxt").mobiscroll().date({
theme: 'Android-ics light', mode:'scroller', display: 'bottom'
});
});
});
</script>
しかし、私は以下のエラーになります:
不明なエラー:構文エラー、認識できない式:サポートされていない擬似:beginDateTxt
どうして?
試すことができます
_$(document.getElementById('j_idt8:beginDateTxt')).mobiscroll().date({theme: 'Android-ics light', mode:'scroller', display: 'bottom'});
_
一般に、jQueryは$()
関数でCSSセレクターのようなものを使用します。 CSSセレクターでは、_:
_は擬似クラスを示します。ただし、あなたの場合、_:
_はidの一部にすぎません。
ジェネリックgetElementById()
を使用する場合、引数はnot分解されますが、IDとして完全に表示されます。したがって、getElementById()
を使用し、結果を$()
でラップすると、この「誤解」を回避できます。
ただし、一般的に、JSFのネームスペーススキームを変更する方が良いと思います。
[〜#〜] edit [〜#〜]
セレクタに関するjQueryドキュメント は、_\\
_を使用して特殊文字をエスケープする必要があることを示しています。
任意のメタ文字(! "#$%& '()* +、。/ :; <=>?@ [] ^` {|}〜)を名前のリテラル部分として使用するには、 2つのバックスラッシュでエスケープする必要があります:\。たとえば、_
id="foo.bar"
_を持つ要素は、セレクタ$("#foo\\.bar")
を使用できます。
これは、ダニエルによって既に与えられた答えにつながります。私の意見では、それは上記の答えよりも優れています。ただし、説明は引き続き有効です。
_$("#j_idt8\\:beginDateTxt").mobiscroll().date({theme: 'Android-ics light', mode:'scroller', display: 'bottom'});
_
JQuery IDセレクターを使用する場合は、:
を\
でエスケープしてから、\
をエスケープする必要があります(二重エスケープ)
ここに:
$(function() {
$("#j_idt8\\:beginDateTxt").mobiscroll().date({
theme: 'Android-ics light',
mode:'scroller', display: 'bottom'
});
});