0

バックグラウンド

顧客ページに配置する JavaScript のスニペットがあります。このスクリプトが実行されると、必要なアセットとスクリプトが読み込まれ、メイン コードが実行されます。

私が読み込んでいるスクリプトの 1 つは、モーダル ウィンドウを作成するための Twitter のブートストラップ JSです。jQuery プラグインとして実装され、「$.modal()」を jquery オブジェクトに追加します。

問題

これは、1 つの顧客サイトを除くすべてのサイトで機能します。この特定のサイトで を呼び出す$('#idOfWindow').modal();と、ページで JavaScript エラーがスローされますObject has no method 'modal'

ブートストラップ コードが呼び出され、$.fn.modalプラグインをセットアップするために呼び出されることを確認しました。何かが jQuery オブジェクトを破壊しているのではないかと推測していますが、これをデバッグする方法がわかりません。

コメント

現在、Chrome の開発者ツールを使用してデバッグしています。プラグインが呼び出される前に読み込まれて実行されることを確認しました。クライアント サイトは jQuery 1.7.2 を使用しています。Chrome ツールには慣れていますが、パワー ユーザーではありません。

4

3 に答える 3

4

元の jQuery オブジェクトがどこかで上書きされているというあなたの考えが正しければ、 で復元できるはずですjQuery.noConflict()

デモ: jsfiddle.net/KthZu


編集:いくつかのデバッグのヒント:

デバッグに役立つように、コンソールで次のコードを使用して jQuery のバージョンを確認できます。

$().jquery

別の潜在的なデバッグのトリックは、プラグインを作成するときに jQuery への参照を保存することです。

$.fn.myPlugin = function(){};
window.jQueryWithMyPlugin = $;

次に、デバッグ時に、window.$上書きされているかどうかをはっきりと確認できます。

$ === jQueryWithMyPlugin
于 2012-11-16T18:53:42.773 に答える
1

通常、外部に埋め込むウィジェット タイプのコードでは、コードをラップする必要があります。

(function($){
    $('#idOfWindow').modal();
})(jQuery);
于 2012-11-16T19:01:49.797 に答える
0

過去に、複数のバージョンの jQuery (または jQuery とプロトタイプ) が同じページに読み込まれるという問題がありました。追加する jQuery のバージョンが、$.fn.modal呼び出されているバージョンと同じであることを確認してください。$().jquery使用中の特定のバージョンの jQuery にアクセスするために使用できます。

于 2012-11-16T18:52:32.320 に答える