2012-07-26 118 views
4

這裏是我的對話框jQuery的對話框不會關閉

</script> 
<script type="text/javascript"> 
    $.ajaxSetup({ cache: false }); 
    $(document).ready(function() { 
     $(".openDialog").live("click", function (e) { 
      e.preventDefault(); 
      $("<div></div>") 
      .addClass("dialog") 
      .attr("id", $(this) 
       .attr("data-dialog-id")) 
      .appendTo("body") 
      .dialog({ 
       title: $(this).attr("data-dialog-title"), 
       minWidth: 200, 
       minHeight: 100, 
       resizable: false, 
       close: function() { $(this).remove() }, 
       modal: true 
//      buttons:{ 
//       close:function(e){ 
//        e.preventdefault(); 
//        $(this).closest(".dialog").dialog("close"); 
//       }} 
      }) 
      .load(this.href); 
     }); 
     $(".close").live("click", function (e) { 
      e.preventDefault();     
      $(this).closest(".dialog").dialog("close"); 
     }); 
     $(".refresh").live("click", function (e) { 
      e.preventDefault(); 
      location.reload(); 
     }); 
    });   
</script> 

jQuery和這裏是我刪除視圖

@using (Html.BeginForm()) { 
    <div> 
    <p>Are you sure you want to delete?</p> 
     @Html.HiddenFor(model=>model.UId) 
    <table border=0> 
    <tr> 
    <td>Name:</td> 
    <td>@Html.DisplayFor(model =>model.FName) 
    @Html.DisplayFor(model => model.LName)</td> 
    </tr> 
    <tr> 
    <td>PAddress:</td> 
    <td>@Html.DisplayFor(model => model.PAddress)</td>           

    </tr> 
    </table> 
    <input type="submit" value="Yes"/> 
    <button class="close">No</button> 


</div> 
} 

的問題是,當我從按鈕關閉對話框不會調用close類不close.but當我刪除preventDefault對話框關閉。任何幫助,請爲什麼對話框不關閉。

回答

2
$(".close").live("click", function (e) { 
    e.preventDefault();     
    $('#yourdivId').closest(".dialog").dialog("close"); 
}); 

試試這個...

1

可以請你試試這個

$(".close").live("click", function (e) { 
       e.preventDefault();     
       $(this).closest(".dialog").dialog("close"); 
      }); 

把這個代碼

$(document).ready(function() { 

這可能會爲你工作...

+2

爲1.7 .live()已過時,建議使用。對(),而不是 – Leon 2012-07-26 05:39:03

+1

我想它也將在刪除教職員和調用它但不工作。還有當我穿上()。 e.preventDefault操作不起作用,即數據被刪除。 – 2012-07-26 06:00:30

1

在這裏你不需要用戶的preventDefault()函數。 preventDefault()用於防止事件的不需要的默認操作。

舉個例子,當你點擊一個鏈接時,它會將你重定向到另一個頁面。如果您希望該鏈接執行其他操作,則需要防止默認並編寫您的操作。

由於此按鈕沒有默認操作(使用「type」屬性定義),所以不需要使用preventDefault()。

+0

當我點擊沒有按鈕時,我需要停止刪除操作。我不知道如何在沒有preventDefault()的情況下做到這一點,你能否請你用代碼解釋 – 2012-07-26 06:01:39

+0

由於這個按鈕不是提交按鈕,你的表單不應該提交,當你點擊按鈕。如果發生這種情況,您可以將該按鈕放在窗體外面,如我在第二個答案中所示。 – 2012-07-31 05:16:23

1

首先你把$.ajaxSetup({ cache: false });裏面的文件準備就緒功能。

+0

正如你可以在上面看到它已經有不知道它在做什麼但不工作 – 2012-07-26 05:57:51

1

您可以像這樣更改您的刪除視圖。

<div> 
@using (Html.BeginForm()) { 
    <p>Are you sure you want to delete?</p> 
     @Html.HiddenFor(model=>model.UId) 
    <table border=0> 
    <tr> 
    <td>Name:</td> 
    <td>@Html.DisplayFor(model =>model.FName) 
    @Html.DisplayFor(model => model.LName)</td> 
    </tr> 
    <tr> 
    <td>PAddress:</td> 
    <td>@Html.DisplayFor(model => model.PAddress)</td>           

    </tr> 
    </table> 
    <input type="submit" value="Yes"/> 
} 
<button class="close">No</button> 
</div> 
1
$(".ui-dialog").hide(); 
    $(".ui-widget-overlay").hide(); 
+0

問候,問題是爲什麼箱子不關閉。手動隱藏消息框是微不足道的。 – tomdemuyt 2012-10-19 12:41:46