0

jQuery UI のモーダル ダイアログ ボックスを使用しています。ダイアログ ボックスにコンテンツを表示するために Ajax 呼び出しを行いたいと考えています。

$(function(){
    $('#myLink').live("click", function(){
        $('#lbContent').dialog('open');
        var url= $(this).attr("href");
        $('div#lbContent').empty();
        $('div#lbContent').load(url);
        return false;
    });

    $('#lbContent').dialog({
        stack:true,
        bgiframe: true,
        autoOpen: false,
        height:500,
        width:700,
        modal: true,
        resizable:true
    });
});

これで、リンクをクリックすると、モーダル ダイアログ ボックスに期待どおりにコンテンツが表示されます。

しかし、そのダイアログ ボックスを閉じて同じリンクをもう一度クリックすると、そのダイアログ ボックスが開きません。間にアラートを出そうとしました。

ページを更新してリンクをクリックすると、期待どおりに機能します。

4

3 に答える 3

1

私の最初のコメントを編集してくれてありがとうピーター。しかし、これをさらに調査した結果、シュルティの問題が動的コンテンツの真の問題であることがわかりました。ジッターのリンクを複製するところまで行きました。

問題は、jQuery ファイルも使用する動的コンテンツです。サーバーにアクセスし、Cold Fusion ページを使用してデータベースからデータを要求する URL を使用すると、Shruti と同じ結果が得られます。最初は機能しますが、その後のアクセスでは機能しません。ダイアログに画像を表示する単純な HTML ページを使用すると、いつでも機能します。

動的コンテンツ ページから jQuery 関数を削除しましたが、毎回機能します。そのため、ロードされている URL でも jQuery が使用されている場合、jQuery に問題があります。

++++++++++++++++++++++++++++++++++++++++++++++++

これをいじって数分後、わかりました....

動的ページがメイン ページと同じ jQuery ファイルを使用する場合は、動的スクリプト内でそれらのファイルを読み込まないでください。つまり、メイン ページは、「メイン ページ」の要素にロードしようとしている動的ページではなく、jQuery ファイルをロードする必要がある唯一のページです。これの欠点は、jQuery UI を呼び出していないため、スタンドアロン環境の動的ページが機能しないことです。

何も変更せずに動的コンテンツを含む標準の div タグを表示および非表示にできるため、これはちょっと奇妙です。しかし、jQuery でダイアログ関数を使用したい場合、すべてが壊れます。うーん!! JavaScript ルーチンの非常に価値のあるライブラリです --- 少し調整する必要があります。それがソフトウェアです。

于 2012-03-16T22:09:09.370 に答える
0

問題を再現できません。問題を一貫して再現する javascript + html コードで構成される要約サンプルを追加することを検討してください。

また、使用するブラウザを追加します。また、エラー コンソールにエラーが表示された場合はどうなりますか。

コードに基づく実際のサンプルについては、http://jsbin.com/opigoを確認してください。

そしてhttp://jsbin.com/opigo/editでコード部分をチェック

于 2009-11-30T08:58:07.640 に答える
0

まだ IE 7.0 を使用しているシステム向けに開発している方に一言。

$('#lbContent').dialog({
    stack:true,
    bgiframe: true,
    autoOpen: false,
    height:500,
    width:700,
    modal: true,
    resizable:true,

ダイアログ パラメーター リストの最後のコンマにより、IE 7.0 でコードが機能しなくなります。

于 2012-03-16T20:35:36.067 に答える