2011-02-07 16 views
1

私は希望の場所にPHPを組み込むページを用意しています。そのページはjQuery 1.4.4を使用しています。 (公式のjQueryライブラリのソースからでも最新のものを使用しますが...) 私が制御できないのは、ユーザーのウェブサイトのjQueryライブラリのバージョンです。 またはユーザーがjQueryをまったく持っている場合でも。同じページの2つの異なるjQuery - 含まれるページに最新のjQueryがあります

私はOLDER jQueryを持つサイトにいくつかのテストを行い、自分のページを含めました。これは矛盾します。

これは、含まれるスクリプトの例です。アッパー(...

.... htmlのヘッド.....

<script type="text/javascript"> var jQ144 = jQuery.noConflict(true);</script> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script> 
<script type="text/javascript"> 
jQ144(document).ready(function($){ 

    $(".helpPlease").hover(function(){  
     $(this).animate({height:'250px'}, { queue:false, duration:400 }); 
     },function(){  
     $(".helpPlease").animate({height:'17px'}, { queue:false, duration:400 }); 
    }); 

....

.... PHPコード:私はこの仕事をすることはできませんコードだけで)例えばです...もっとコード........

}); 
</script> 

それだけでは動作しません。

ページに既にjQueryがあるかどうかを確認する方法はありますか?古いコード - 新しいコードをアクティブにする - 私のページのJqueryライブラリ? ...新しいものを古いものに上書きする方法は?

または何か間違っていますか?私は多くの提案をウェブ上で説明しましたが、結果はありませんでした。

ありがとうございます! :)

答えて

3

jQueryをインクルードすると、$変数jQueryクラスを作成します。 $はjQueryへの参照になります。したがって、古い/異なるバージョンのjQueryを組み込むと、実際にはjQueryクラスを「上書き」(置き換え)しています。

テスト済み、これは動作します(noConflictコールでtrueパラメータを削除)

<html> 
    <head> 
     <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script> 
     <script type="text/javascript"> 
      jQuery.noConflict() 
      jQuery144 = jQuery 
      console.log(jQuery144, jQuery) 
     </script> 
     <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.0/jquery.min.js"></script> 
     <script type="text/javascript"> 
      jQuery144(function($) { 
       console.log("hello", $.fn.jquery) 
      }) 
      jQuery(function($) { 
       console.log("world", $.fn.jquery) 
      }) 
     </script> 
    </head> 
    <body> 
    </body> 
</html> 

EDIT 2:あなたは心を持っている必要があります重要な問題があります。内部的には、jQueryはそれ自体をwindow.jQueryと呼びます。 jQueryを再度インクルードすると、window.jQueryが再定義されますが、最初のバージョンで実行された呼び出しは、定義時ではなく実行時にバインドされるため、最も古いjQueryバージョンの内部呼び出しが実際に最新の状態で行われる可能性があります1。注意してください。

+0

ありがとうございました。それは失敗する。 –

+0

今すぐお試しください!私はそれをテストして今働いています。 –

+0

Gracias Gonzalo。あなたは説明してください、素晴らしいですが、私が言ったように:私はライブラリが私のページのためにそこに待っているか分からない。私のページにjQueryサイトの最新のJqueryがあるとしましょう。どうすればいいですか?私は繰り返す。触れることができず、そこにjQueryスクリプトが何か分かりません。そして、矛盾は全くないはずです。今のところ、私のページにjQがない場合は、jQを持つページではうまくいきますが、もし最新のjQがあれば、外側のページが壊れてしまいます。 ... –

関連する問題