2013-04-18 24 views
27

i bir txtBox ve id var: Yakalanmayan Hata: Söz dizimi hatası, ifadesi: desteklenmeyen sözde:

beginDateTxt

ama jsf bunun j_idt8:beginDateTxt jquery

ben bu

gibi ulaşmaya çalışır yapar
<script type="text/javascript"> 
      $(document).ready(function() { 
       $(function() { 
        $("#j_idt8:beginDateTxt").mobiscroll().date({ 
         theme: 'android-ics light', mode:'scroller', display: 'bottom' 
        }); 
       }); 

      }); 
    </script> 

ama hata altına almak:

Uncaught Error: Syntax error, unrecognized expression: unsupported pseudo: beginDateTxt

neden?

cevap

54

Sen Genel jQuery olarak

$(document.getElementById('j_idt8:beginDateTxt')).mobiscroll().date({theme: 'android-ics light', mode:'scroller', display: 'bottom'}); 

onun $() fonksiyonunda CSS seçicileri gibi bir şey kullanır deneyebilirsiniz. Bir CSS seçicisinde :, bir sahte sınıf anlamına gelir. Ancak, sizin durumunuzda : sadece kimliğin bir parçasıdır. getElementById() genelini kullanırsanız, argüman değil ayrıştırılır, ancak tamamen kimlik olarak görülür. Yani getElementById() kullanarak ve sonucu $() ile sarmalayarak bu "yanlış anlama" yı engelleyebilirsiniz. Bununla birlikte, genel olarak, JSF'nizdeki ad planını değiştirmek daha iyi olurdu diye düşünüyorum.

DÜZENLEME

Eğer \\ kullanımıyla özel karakterleri kaçmak gerekir jQuery documentation on selectors devletler:

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") .

Bu zaten Daniel, verdiği cevaba götürecek Bence üstündür yukarıda verilen cevaba. Bununla birlikte, açıklama geçerli kalır.

$("#j_idt8\\:beginDateTxt").mobiscroll().date({theme: 'android-ics light', mode:'scroller', display: 'bottom'}); 
+0

aynen öyle! thx – user2294016

+1

jQuery seçicisini kullandığımızı düşündüğümüz için getElementById – AaA

+2

@BobSort'u kullanmıyoruz. Burada sorun, jQuery'yi bir psödo sınıfın kullanıldığı ve sonuçta başarısız olduğunu düşündüğü bir ': 'içeriyordu. Aşmak için argümanını sadece bir dize olarak yorumlayan getElementById() 'yi kullandım. – Sirko

26

Eğer \ (çift kaçış) İşte

kaçmaya sonra \ ile : kaçıp gerek jQuery kimliği seçiciyi kullanmak istiyorsanız :

$(function() { 
    $("#j_idt8\\:beginDateTxt").mobiscroll().date({ 
     theme: 'android-ics light', 
     mode:'scroller', display: 'bottom' 
    }); 
}); 
İlgili konular