1

状況:

  • 1 つの Web ページで Syntax Highlighter と Lightbox 2 を使用しています
  • Syntax Highlighter は JavaScript を使用します。Lightbox 2 は jQuery (バージョン 1.7.2) を使用します
  • 各スクリプトを個別に(異なるページで)実行すると、機能します
  • 同じページで両方を実行した場合にのみ問題が発生します
  • Google Chrome では、Web ページは問題なく動作します
  • IE 8 では、lightbox2 関数の一部が呼び出されるとエラーが発生します。
  • エラーは、このオブジェクトでサポートされていないメソッド/プロパティを示す jquery1.7.2 ファイルを指しています
  • エラーの正確な行のコードは次のとおりです。parts = rfxnum.exec(val);
  • rfxnum と val の両方の値を表示するために alert() を挿入しました
  • rfxnum=/^([+-]=)?([\d+.-]+)([az%]*)$/i
  • 値 = 802
  • 私が発見したクレイジーなことは、2 つのスクリプトを個別に実行すると、アラートは rfxnum と val に同じ値を示しますが、正常に動作するということです。
  • Syntax Highlighter はすべての条件で正常に動作します

私の推測: -Syntax Highlighter は、jQuery 1.7.2 ライブラリの値/関数/パラメータと干渉しているようです。または、シンタックス ハイライターと jQuery ライブラリの両方が参照するグローバル値。

私の質問:

  • Syntax Highlighter またはその他の非 jQuery JS スクリプトが jQuery lib と対話/参照しないようにする方法はありますか。
  • 答えが、そもそも JavaScript が jQuery ライブラリを参照しないというものである場合、私の質問は、このようなことが発生する理由として考えられるものは何かということです。
  • または、他の関数がパッケージ内の関数/変数を参照できないように、jQuery lib と関連する JS 関数を一緒にパッケージ化する方法はありますか?

提案/洞察をいただければ幸いです。

4

1 に答える 1

2

noConflict() を使用できます

<!-- Putting jQuery into no-conflict mode. -->
<script src="prototype.js"></script>
<script src="jquery.js"></script>
<script>

var $j = jQuery.noConflict();
// $j is now an alias to the jQuery function; creating the new alias is optional.

jQuery.noConflict(); の使用 -ライトボックスと jQuery の競合

于 2013-06-28T07:36:48.457 に答える