0
  1. 私のMVC 3アプリケーションにはリンクボタンがあり、これをクリックするとjqueryダイアログに部分的なビューがロードされます。

意見

   <a class="dialogLink" href="/Home/OpenDialog">OPen Dialog</a>

部分図

<div id="dlgReport"><input type="button" id="closeDialog" value="Close"/></div>

コントローラ

public ActionResult OpenDialog(ViewModel model){
 //setting value
return PartialView(model);}

Jクエリコード

$(function () {
  $.ajaxSetup({ cache: false, async: false });
  $('.dialogLink').live('click', function () {
     var dialogId = 'uniqueName-' + Math.floor(Math.random() * 1000)
     var dialogDiv = "<div id='" + dialogId + "'></div>";
     var data = $('form').serialize();
     $.post(this.href, data)
     .success(function (result) {
        $(dialogDiv).html(result).dialog({
        autoOpen: true,modal: true,title: 'Test',
        open: function () {
          $('#closeDialog').bind('click', function (e) {
          //debugger;
          $(".ui-dialog-content").dialog().dialog("close");
     });}});})
     return false;});});
  1. リンクボタン(ダイアログを開く)をクリックすると、ポストリクエストがコントローラーに送られ、データが入力され、データが部分ビューと部分ビューに読み込まれたカスタム「ダイアログを閉じる」ボタンに渡されます。

  2. 「ダイアログを閉じる」ボタンを最初にクリックすると、ダイアログが閉じますが、もう一度ダイアログをロードすると、「ダイアログを閉じる」が機能しません。

  3. デバッガーで確認します。2回目は、

    ('#closeDialog').bind('クリック', function (e) {

    呼び出されていません。ここで何が問題なのかわかりません。提案してください!ありがとう!

注 - コード " $ (".ui-dialog-content").dialog().dialog("close"); " の代わりに " $(this).dialog('close'); " を使用した場合「ダイアログを閉じる」ボタンをクリックすると、最初から不明なエラーが発生します。

4

2 に答える 2

0

最後に、他のスタック オーバーフロー スレッドから回答を得ました。ダイアログを空にして削除する必要があります。

$(function () {
 $.ajaxSetup({ cache: false, async: false });
 $('.dialogLink').live('click', function () {
 var dialogId = 'uniqueName-' + Math.floor(Math.random() * 1000)
 var dialogDiv = "<div id='" + dialogId + "'></div>";
 var data = $('form').serialize();
 $.post(this.href, data)
 .success(function (result) {
    $(dialogDiv).html(result).dialog({
    autoOpen: true,modal: true,title: 'Test',
    open: function () {
      $('#closeDialog').bind('click', function (e) {
      //debugger;
      $(".ui-dialog-content").dialog().dialog("close");
      $(this).empty();
      $(this).remove();
 });}});})
 return false;});});
于 2013-11-14T16:45:04.693 に答える