2012-07-26 122 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