17

pinaxを使ってサイトを開発しています。私のテンプレートの 1 つで、単純な jquery ダイアログ ボックスを開こうとしています。ただし、「ダイアログは関数ではありません」という JavaScript エラーが発生し続けます。jquery 1.2.6 と jquery-ui 1.6 を使用しています。私のjavascriptとHTMLは次のとおりです。

<html>
<head>
<link type="text/css" href="/site_media/smoothness/ui.all.css" rel="stylesheet" />
<script src="/site_media/jquery.js" type="text/javascript"></script>
<script src="/site_media/ui/ui.core.js" type="text/javascript"></script>
<script src="/site_media/ui/ui.draggable.js" type="text/javascript"></script>
<script src="/site_media/ui/ui.resizeable.js" type="text/javascript"></script>
<script src="/site_media/ui/ui.dialog.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function(){
                    $('#dialogbox').dialog();
            });
 </script>
 </head>
 <body>
   <div id="dialogbox" title="dialog title">
     <p>Test dialog</p>
   </div>
 </body>
 </html>

誰かがなぜこれが起こっているのか説明できますか?

4

8 に答える 8

36

Google の公開バージョンを使用する方法と、jQuery UI サイトからレガシー (1.6) バージョンをダウンロードして手動でファイルを含める方法の両方で、エラーを再現しようとしました。どちらも問題を引き起こしませんでした (動作を確認するにはhttp://jsbin.com/uloqi )。

つまり、次のいずれかで問題が解決する可能性があります。

  1. Firebug for Firefox などのツールを使用して、各 JS ファイルが含まれていることを確認します。
  2. エラーを引き起こす可能性のある他の JS がページにないことを確認してください。
  3. ダウンロードしたファイルのバージョンが正しいことを確認します。

貼り付けたコードは、適切なファイルと組み合わせると完全に機能するため、他に何を伝えればよいかわかりません。

于 2009-12-27T05:02:44.103 に答える
4

上記とまったく同じ問題が発生しました(メッセージボックスは1回だけ開きます)。私が抱えていた問題は、メッセージボックスのhtmlもjqueryをロードすることでした。私はそれを必要としなかったので、私は問題なくそれを取り除くことができました。そうしないと、問題をもう少し特定する必要があるかもしれません。

于 2010-10-24T11:12:40.597 に答える
2

Doug Neiner による回答は本当に役に立ちました。私のケースはもう少し複雑でしたが、それでも同じポイントになります:

次のようにページ B をロードするページ A からダイアログを開きました。

$('#MyDiv').dialog({
    autoOpen: false
})
$("#MyDiv").load("PageB.aspx", function () {
    $("#MyDiv").dialog("open");
});

問題は、ページ A とページ B の両方に jQuery が含まれていたことです。注意: 別のページをダイアログにロードする場合、同じ js を含める必要はありません。

于 2012-08-04T00:56:34.077 に答える
2

複数の JQuery バージョンと異なる JQuery バージョンが同時に読み込まれると、特定の状況下でこのエラーが発生することがあります。

私の場合、マスターを使用した ASP ページがあります。私のマスターにはJQuery 1.4.2.minが含まれていました私のaspxページにはJQuery 1.7.2.minが含まれていました

JQuery 関数がコントロールから呼び出されると、どの JQuery を使用するかについて混乱するため、そのスクリプトが JQuery がロードされたことを示すことができたとしても (JQuery バージョンを表示できます)、JQuery 関数を見つけることができませんでした。

ローカルの JQuery 1.7.2.min インクルージョンを aspx ファイルから削除し、マスターを 1.4.2.min から 1.7.2.min に更新すると、問題はなくなりました。

于 2012-05-26T00:35:22.060 に答える
0

すでに説明したように、おそらく既存のライブラリをオーバーライドします。

これに対処する 1 つの方法は、正しいファイルがロードされていることを確認することです。

もう 1 つの方法は、ダイアログとダイアログ内のコンテンツの間に iframe を挿入することです。iframe は、ブラウザーによって、独自のスクリプトを持つ別のページとして扱われます。そのため、iframe の「上」にあるコンテンツのスクリプトは、iframe の「下」にあるダイアログのスクリプトとは別になります。

于 2013-08-01T09:56:30.203 に答える