2012-11-13 41 views
0
$(function() { 
     $('#modalDlg2').live("click", function (event) { 
      event.preventDefault(); 
      loadDialog(event, "/User/Create"); 
     }); 
     function loadDialog(event, target) { 
      var $dialog = $('<div></div>'); 
      $dialog.empty(); 
      $dialog 
    .load(target) 
    .dialog({ 
    title:"Novo utilizador", 
     modal: true, 
     autoOpen: false, 
     width: 600, 
     show:'fade', 
     hide:'fade', 
     minHeight: 400, 
     resizable: false 
    }); 

    $dialog.dialog("option", "buttons", { 
      "Cancelar": function() { 
        $(this).dialog("close"); 
        $(this).empty(); 
       }   }); 
      $dialog.dialog('open'); 
     }    
    }) 

我有我的關閉按鈕的問題「Cancelar」它應該關閉模態對話框,然後清空,但似乎$(本).dialog( 「close」)不起作用,並且.empty()會。
我已經看到了我的問題的解決方案everywere。任何人都可以幫助我嗎?jQuery的模態對話框按鈕關閉不正常工作

+0

語法錯誤:'$('

');' –

+0

對不起......我以前在div中添加了id ...但是它仍然會打開一個模式對話框並且不會關閉它... – Flavio

回答

0

試試這個:

$dialog.dialog("option", "buttons", { 
    "Cancelar": function() { 
      $dialog.dialog("close"); 
      $(this).empty(); 
    } 
}); 
$dialog.dialog('open'); 

$dialog.dialog("option", "buttons", { 
    "Cancelar": $.proxy(function() { 
     $(this).dialog("close"); 
     $(this).empty(); 
    },this)   
}); 
$dialog.dialog('open'); 
+0

謝謝Marco;)它確實工作。現在有誰能告訴我爲什麼我不能使用$(this).dialog('close')而不是$ dialog.dialog('close')?這樣我可以防止未來類似的錯誤?提前致謝。 – Flavio

+0

嗨弗拉維奧,你不能使用$(this).dialog('..'),因爲範圍(上下文)在「癌症」回調中發生了變化。使用$ .proxy()函數將外部函數(對話框)的作用域插入到內部函數(cancelar)中,以便您可以訪問該對話框。希望這是可以理解的。 –

+0

讓我只是問你一些更多的馬可,如果我想在html頁面創建一個按鈕,就像「取消」按鈕一樣,我怎麼能做到這一點?我想我會使用代理函數,而不是使用「this」作爲上下文我會使用$對話框,不是嗎? – Flavio

0

我會嘗試把這個在回調函數爲負載:

$(function() { 
    $('#modalDlg2').on("click", function(event) { 
     event.preventDefault(); 
     loadDialog(event, "/User/Create"); 
    }); 

    function loadDialog(event, target) { 
     var $dialog = $('<div></div>'); 
     $dialog.empty(); 
     $dialog.load(target, function() { 
      $dialog.dialog({ 
       title: "Novo utilizador", 
       modal: true, 
       autoOpen: false, 
       width: 600, 
       show: 'fade', 
       hide: 'fade', 
       minHeight: 400, 
       resizable: false 
      }); 

      $dialog.dialog("option", "buttons", { 
       "Cancelar": function() { 
        $(this).dialog("close"); 
        $(this).empty(); 
       } 
      }); 
      $dialog.dialog('open'); 
     }); 
}); 
+0

注意:使用' .on',而不是'.live'最新的jQuery版本 –

+0

感謝您的提示,我apreciate你的幫助:) – Flavio

0

試試下面的代碼:

$dialog.dialog("option", "buttons", { "Cancelar": function() { $(this).remove(); } });