2011-07-13 14 views
0

jQuery UIダイアログがいくつかあるWebアプリケーションでpjaxを使用しています。jQuery UIダイアログとpjax

私が遭遇している問題は、ダイアログを作成するために使用されるdiv要素が、ダイアログが作成されるときにdomのコンテナから移動されることです。

pjaxが新しいページを読み込むとき、ダイアログdivは、pjaxがコンテンツをロードするコンテナ内に存在しないため、破棄されません。 pjaxがダイアログのあるページに戻ると、div要素の2番目のコピーがロードされ、domに存在する要素が重複しているため、すべてがバグになります。

誰もこの問題の優雅な解決策を見つけましたか? jQuery UIのダイアログ呼び出しで作成されたすべてのDOM変更をクリーンアップする方法はありますか?

この問題は、pjaxに固有の問題ではないことにも言及しておきます。私が単純に$( "#mycontainer")を使うと同じことが起こります。load( "page-with-dialog.html");

答えて

0

divスタイルをdisplay:noneに設定し、同じものを再利用し、破棄しないでください。

<div id="dialog" class="ui-helper-hidden"> 
</div> 
+0

私は常にダイアログdivを本体に保持します。それらは分離する必要があります。 –

+0

のmain.htmlと、
My Dialog
のmain.htmlが$( "#container")load( "dlgpage.html")を呼び出すとdlgpage.htmlがあるとします。ロードすると、いくつかのjqueryが実行され、 'dlg'がjqueryのUIダイアログに変わります。ダイアログは機能しますが、DOMでは 'container' divの外に移動しました。 main.htmlが$( "#container")。load( "newpage.html")を呼び出すと、 'container' div内のすべてが削除され、新しいコンテンツに置き換えられますが、ダイアログエレメントはdom内に残ります。 $( "#container").load( "dlgpage.html")を再度呼び出すと、DOM内にmydialogが複製されます。 – dekim

+0

新しいコンテンツをロードする前に、pjax.jsに行を追加してダイアログをクリーンアップしました。今のところ私はそう思う。 – dekim

関連する問題