[OK]をここに追加して本当に他の多くの人に役立てたいと思っていました。このためのすべての回避策を試した後、私は本当に重要なことを学びました。ダイアログウィンドウに完全なDOMをロードすると、別のインスタンスが作成され、大きな時間を費やすことになります。私の場合は、MVCで部分的なビューをロードしています。私はループを使って重複を破棄、削除、および手動で削除しようとすることについて多くの記事を見てきました。これらは本当の答えではなく、別の問題に対するバンドエイドです。また、ダイアログにデータをロードするときには、Ajax呼び出しを行う際に、プロセス内でスクリプトを二重にロードしていないように注意する必要があります。 $( '。selector')。dialog()。dialog()を呼び出す必要がある場合、最初のインスタンスに何らかの問題があります。
私の解決策は他には何もしませんでした。 1)部分ビューを変更して、必要な内部HTMLのみを含むようにしました。 2)データを取得するとDOM全体が返されるため、find()を使用してダイアログに返された内容を制限しました。 3)ダイアログを閉じるときは、ダイアログ(「閉じる」)メソッドを使用します。
リフレッシュの問題がある場合は、ダイアログを慎重に作成することで、時折競合が発生する可能性があるため、docの準備ができていない構造を見逃してしまいました。このダイアログは、使用すると構築できます。
実際にどのようなデータが返されているか注意してください。奇妙な動作が発生します。
これは、以下のように期待通りに機能します。これは、これが誰かのために無限の何時間も節約することを本当に願っています。
var editOptDialog = YourOptions
Open:
$("#dialog-edit").dialog(editOptDialog);
$("#dialog-edit").dialog('open');
$.get($(element).attr('url'), function (data) {
$("#dialog-edit").dialog().html($(data).find('#content-modal'));
});
Close:
$("#dialog-edit").dialog().dialog("instance").close();
ありがとうございました。私はそれを試みます。 –
ようこそ。コードに合わせてセレクタを調整する必要があるかもしれません。しかし、プリンシパルは同じままです。 –