2011-08-10 9 views
1

クライアントのページを再構築しています。このページで実装したjQueryコードに問題があります。
ページが読み込まれたときに表示されるPrototypeを使用するポップアップライトボックスがあります。そこには、jQueryを使用する右上にマーキー/スクロールが配置されています。私は本当にエラーの原因を確かめています。
私はjQueryのnoConflictについてよく知っていますが、このページではすべてのバリエーションを試してみましたが、数秒後にマーキーが停止してエラーが表示され、IEでは "Errors on page"ライン464(「アレイの長さは有限の正数を割り当てなければならない」)を参照する。ここ
ページです。ここですauthor-
によって除去-link prototype.jsのです。私は、このエラーの原因を全く見当がつかないとJavaScriptが私の最強の側ではないですauthor-


によって除去-Link 。jQueryとプロトタイプ - コリジョンが原因で機能が無効になる

+0

おそらくそれはうまくいくはずですが、jqueryのポップアップライトボックスやプロトタイプのマーキーを見つけて、ライブラリの1つだけを使う方が簡単でしょう。彼らは一緒に働くことについて非常に気温がかかることがあります。あなたの問題はおそらくあなたの呼び出しのスコープとあなたのライブラリとプラグインを含める順序と関係していると言いました。 – Ken

+0

私はちょうどそれをやってしまうかもしれませんが、この問題の修正を得ることができれば、jQueryを使いこなしています。 また、ライブラリとプラグインを含めるためにはどうすればよいですか?そして私の無知を赦してください。しかし、私の電話のスコープは何ですか? –

答えて

2

私が最初にこのエラーを見て始めたとき、私が扱っていた正確な問題に固有の解決策を探していたはずの、より一般的な "Prototype + jQuery"
用語「配列の長さ」と「464の行を追加」は、実際にこの特定の問題に対する解決策に私を導いた、そしてここにある:

  1. はv1.5.1.2にプロトタイプV1.4から更新します( v1.7、最新リリース、 は正しく動作せず、スタックオーバーフローエラーも発生しました。
  2. は、スクリプトの順序の周りに変更し、noConflictを変更:

    <script src="/scripts/jquery-1.5.2.js" type="text/javascript"></script> 
    <script src="/scripts/jquery.Scroller-1.0.src_4.js" type="text/javascript"></script><!-- all _$_'s replaced with _jQuery_ --> 
    <script type="text/javascript"> 
    <!-- 
    // more jquery, all $'s replaced with jQuery 
    --> 
    </script> 
    <script type="text/javascript"> 
    <!-- 
    jQuery.noConflict(); 
    --> 
    </script>  
    <script src="scripts/prototype-1.5.1.2.js" type="text/javascript"></script> 
    <script type="text/javascript"> 
    <!-- 
    // everything else, including prototype scripts 
    --> 
    </script> 
    

そして、それはそれです!今私は "行464"エラーを取得しないと、すべてのスクリプトが正常に動作します。 @Kenと@Diodeusありがとうございました。

+0

ありがとうリック、あなたは今日私の人生を救った。 –

0

同じライブラリにプラグインがあります。 jQueryにはあなたが言及したすべてのプラグインがあるので、両方を使用する必要はありません。これらの2つのライブラリは、協力し合うのが難しい場合があります。

あなたが両方のライブラリを使用して設定している場合は、この順序付けてみてください:
1)は、他の)
2 libにjqueryの
3)
4を呼び出すnoconflict)すべてのプラグイン

<script src="scripts/prototype.js" type="text/javascript"></script> 
<script src="/scripts/jquery-1.5.2.min.js" type="text/javascript"></script> 
<script type="text/javascript"> 
<!-- 
    $.noConflict(); 
--> 
</script> 
<script src="/scripts/jquery.Scroller-1.0.src_3.js" type="text/javascript"></script> 
<script src="scripts/lightbox.js" type="text/javascript"></script> 
+0

私はこの順序でスクリプトを配置しようとしましたが、@Diodeusのように '$'を 'jQuery'に置き換えました...まだ同じエラーが表示されています。 私はall-jQueryを使用していましたが、変更を開始する前にスクリプトがサイト上で使用されていました。 –

2

あなたは可能プラグインを経由し、$(jQuery(に置き換える必要があります。これは、競合モードではなく、 "$ ..."の代わりに "jQuery ..."を使用する必要があるためです。

+0

だから基本的に私が使用するすべてのjQueryコード - 私は '$'を 'jQuery'に置き換えるべきですか? –

+0

はい。おそらく "矛盾"を念頭に置いて作成されたものではないので、プラグインでこれを実行します。 –

+0

エラーを引き起こす正確なスクリプト/行を正確に突き止める方法はありますか? 464行目のIEはprototype.jsに言及しているだけで、 '.extend'と何か関係がありますが、多分私にはそれほど言わない(多分)のです。 問題の原因を見つけることができれば、簡単に修正することができます。 –

2

サラウンド

(function ($) { 
... // Your code 
})(jQuery) 

のみjQueryととjQueryにバインドされている、それは地元の$を使用しています。この方法ではjQueryを使用するコード。

また、両方のフレームワークを同じWebサイトで使用することは悪い考えです。ほとんどすべてのPrototypeプラグインのjQueryの置き換えを見つけることができます。

関連する問題