2011-04-10 23 views
6

Ben nasıl jQuery'nin birini kaçabilirsek Ancak ifadesi EL ifadesi ile jQuery çatışmalarda

$('...') 

Java Facelets ve jQuery kullanıyorum?

Ayrıca büyük bir yığın Javascript'ten kurtulmak istiyorum.

Facelet'lerin xhtml mevcut JSP dönüştürmek için

ANSWERED, sadece <![CDATA[ ... ]]> tarafından mevcut javascript sarmak için uygundur. Ancak <script> için çıkış komut CDATA bölümü ile çakışan <!-- --> comment tarafından sarılmıştır:

<script>/* <![CDATA[ */ scripts... /* ]]> */</script> 

=> <script><!-- /* <![CDATA[ */ scripts... /* ]]> */--></script> 

da When is a CDATA section necessary within a script tag? bakınız:

<script><![CDATA[ scripts... ]]></script> 

=> <script><!-- <![CDATA[ scripts... ]]> --></script> 

Bu sorunu gidermek için, ayrıca CDATA dışarı yorum gerekir.

+0

, asıl sorun net gelir: Eğer bir XML dosyasında JS kodunun çiğ yazıyoruz ve XML ayrıştırıcı hangi olmalıdır '$' üzerinde düşüyor & 'olarak temsil edilir. Çirkin 'CDATA' çözümünün dışında, en iyi çözüm JS kodunu kendi '.js' dosyasına koymaktır. Ne de olsa, soru başlığı ve bedeni gerçek problemi tanımlamaz ve bu nedenle yanıltıcıdır. – BalusC

cevap

3

Bu, normal olarak çakışma olmamalıdır. EL, ${} sözdizimini kullanır. Her neyse, jQuery() yerine ($() sadece bir kısa yol) veya JS kodunu kendi .js dosyasına koyabilirsiniz.

11

herkes gerektiğinde, Expression Language Specification Version 2.2 Maintenance Release EL ifadelerini kaçmayı açıklamaktadır: olarak kompozit bir ifadeyi kullanmak karakter dizisini kapsar değişmez değerleri üretmek için

"${" veya "#{", geliştirici seçebilir burada gösterilmiştir:

${'${'}exprA} 
#{'#{'}exprB} 

elde edilen değerlerolurdizeleri ${exprA} ve #{exprB}.

Alternatif kaçış karakterleri \$ ve \# aksi bir eval ifade olarak işlem ne kaçmak için kullanılabilir. Verilen literal-ifadeler: Güncellemenize gereğince

\${exprA} 
\#{exprB}