2011-10-05 14 views
5

richfaces 3_3_3.Finalを使用していますが、最新のjQuery http://code.jquery.com/jquery-latest.pack.jsを使用することはできませんが、競合が発生しているようです。richfacesで使用されるJQueryのバージョンを変更してください

RichFacesのすでに(魔女が適したバージョンではありません、1.3.2のようです)jQueryのバージョンをロード:

<script type="text/javascript" src="/project/a4j/g/3_3_3.Finalorg/richfaces/renderkit/html/scripts/jquery/jquery.js.jsf"> 

は、私は私のJavascriptのプロセスのための最新バージョンを使用することができ、そしてRichFacesのは、その使用を許可自分のバージョン、そしてどのように?

jQuery.noConflict()は良い研究領域ですか?

+0

@Moin Zaman [この投稿](http://stackoverflow.com/questions/3881953/how-do-i-use-the-latest-version-of-jatest-version-of-jquery-and-get-back-the-for -jquery-in-rich)では、複数のバージョンのjQueryを並べて使用することができますが、どういうことは言いません。 –

答えて

6

はい、jQuery.noConflictは良いスタートですが、あなたが使用している「他のライブラリ」もjQueryであるため、おそらく複雑になります。

jQueryをロードすると、グローバル変数として$jQueryが定義されます。 .noConflictを使用すると、「$の制御を放棄する」 - つまり、$が何であったかを意味し、再び設定されます。 v1.3.2が最初にロードされ、次に最新のパック(1.6.4)が次にロードされる場合、.noConflict$をv1.3.2に参照しますが、jQueryは依然として1.6.4を参照します。

基本的には、最新のパックをロードする前にjQueryのエイリアスを設定する必要があります。 See my fiddle used to simulate your situation(下記も貼付)。 1.6.4をロードした後

<script type="text/javascript"> 
    //alias v.1.3.2 
    var $132 = $; 
</script> 
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.pack.js"></script> 
<script type="text/javascript"> 
    //alias v1.6.4 
    var $164 = $, jQuery164 = $; 

    //reset original variables to v1.3.2 
    $ = jQuery = $132; 

    console.log("v1.3.2: ", $().jquery, jQuery().jquery) 
    console.log("v1.6.4: ", $164().jquery, jQuery164().jquery) 

    $('div')  //selected using v1.3.2 
    $164('div') //selected using v1.6.4 
</script> 

、あなたはそれをエイリアスとバック1.3.2オブジェクトへ$jQueryを設定する必要があります。これは本質的に同じことをするので、.noConflictを使用しません。 RichFacesは1.3.2を使用して作業を続け、別名1.6.4のバージョンに対してコードを書きます。私のフィドルでは、それは$の代わりに$164を使うことを意味します。私はそれが理にかなったことを願うフィドルがもっと明確になると確信しています。


は最後に、jquery-latest.pack.jsを使用してコードを開発するために細かいですが、あなたは今まであなたの生産のウェブサイト上でそれを使うべきではありません。その理由は、将来のある時点でjQueryが更新されるためです。最新のパックをロードしている場合、それらのアップデートによって、あなたが知らなくてもサイトの機能が損なわれる場合があります。あなたのサイトが正常に機能し続けることを確認したときにのみ、バージョンを選んでそれに固執するほうが安全です。

+0

答えを理解していますが、解決策を実装できません。 Richfacesとの競合があります(拡張データ型は表示できません) –

+0

これは最初に言及したものとは異なる問題です - 少なくとも私は接続が見られません。 RichFacesとjQueryはどうやっていますか? – Jeff

+0

私のプロジェクトはJSF1.2/Richfaces(maven)を使用しています。私が別のバージョンのjQueryを組み込むためにテストすると、ヘッダーに '

関連する問題