0

AJAX を使用して jQuery ダイアログを開こうとしています。ダイアログのコンテンツはクエリ文字列から読み込まれ、フォーム タグ内にサーバー コントロールが含まれます。

各行のリンクがダイアログを生成する GridView があります。

初めて、ダイアログは正常に読み込まれますが、その後、ページで別のダイアログを開く必要があり、最初のダイアログが読み込まれます。その後、同じダイアログを開くことができません。Firebug で DOM を調べると、ページの最後に複数の「コンテナ」が表示されます。1 つの列にリンクと空の div が含まれる GridView があります。コントロール ID は ASP.NET によって壊れているため簡略化しましたが、これが私のコードです。

$('#linkId').click(function() {
    $('#panelId').dialog({
            autoOpen: true,
            height: 600,
            width: 680,
            modal: true,
            show: 'blind',
            hide: 'blind',
            title: 'More Information',
            open: function () {
                $(this).load(url).parent().appendTo("form");
            },
            close(){
                // I've also tried using these (not both at the same time)
                $(this).dialog('destroy').remove();// dialog never opens again
                $(this).dialog('disable').remove();// dialog never opens again
            }
        });
        return false;
    });
});

含まれている関数を close イベントに追加しようとしましたが、同じ効果が得られます。それ以外の場合、ダイアログが最終的に開くと、すべてが完全に機能します (ページの最後に複数のダイアログ コンテナーがあるにもかかわらず)。

4

1 に答える 1

3

jqダイアログAPIドキュメントから:

"ダイアログを再利用したい場合、最も簡単な方法は、"auto-open" オプションを $(foo).dialog({ autoOpen: false }) で無効にし、$(foo).dialog('openこれを閉じるには、$(foo).dialog('close') を使用します。詳細な説明と完全なデモは、Nemikor ブログで入手できます。

于 2011-08-26T15:28:53.450 に答える