【问题标题】:How do you close a JQuery dialog so that the content is cleared如何关闭 JQuery 对话框以清除内容
【发布时间】:2012-03-05 12:41:05
【问题描述】:

我希望有人能告诉我为什么我无法清除不同打开事件之间的对话内容。 首先,我有一个非常简单的页面,其中包含如下所示的更新面板。主窗体中唯一的东西是一个链接(“点击我”)来调用对话框打开。
open 事件处理程序执行异步回发。事件处理程序方法“btn_dialog”背后的代码使用然后显示的值填充对话框的文字(“litChart”)。这一切都很好。我的问题是当我单击关闭(X 按钮)时,关闭对话框就好了,文字中的内容没有被清除,因为我认为它会在关闭期间以及下次单击链接打开对话框时显示我第一次放在那里的相同文本/控件。我想要的是在每次对话框关闭时清除内容,这样它就不会记得以前的内容了。
我用过 $("div#contentHolder").empty();和 $("div#contentHolder").dialog("destroy").empty();以及其他各种方式。我认为正在发生的事情是选择器没有正确引用对话框内容。
我是 JQuery 的新手,不知道从哪里开始。如果有人可以帮助我提供经过验证的代码,我将不胜感激。

<asp:Content ID="Content1" ContentPlaceHolderID="cph_head" Runat="Server">

 <script type="text/javascript" >
    $(function () {
        $("#dialog_detail").dialog({ autoOpen: false, width: 'auto', 
         open: function (event, ui) { __doPostBack('<%=btn_dialog.UniqueID %>', ''); },
         close: function (event, ui) { $("div#contentHolder").empty(); }
        });
    });
 </script>
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="cph_main" Runat="Server">
  <asp:UpdatePanel ID="up_main" runat="server">
    <ContentTemplate>    
         <span onclick="$('#dialog_detail').dialog('open');">click me</span>
    </ContentTemplate>
   </asp:UpdatePanel>
   <div id='dialog_detail'>
        <asp:UpdatePanel ID="up_dialog" runat="server">
           <ContentTemplate>
              <asp:UpdateProgress runat="server" ID="UpdateProgress1"  
                  AssociatedUpdatePanelID="up_dialog">
                  <ProgressTemplate>
                       <asp:Image ID="postbackAnimation" 
                          ImageUrl="/dashboard/images/ajax-loader.gif" 
                          AlternateText="Loading..." runat="server" />
                  </ProgressTemplate>
               </asp:UpdateProgress>    
               <div id="contentHolder" runat="server">
                  <asp:Literal ID="litChart" runat="server"></asp:Literal>
                </div>   
                <asp:Button ID="btn_dialog" runat="server" style="display:none;" />
             </ContentTemplate>
          </asp:UpdatePanel> 
  </div>
</asp:Content>

下面是填充它的代码:

是的,我已经尝试过了,而事件刚刚又尝试了一次。这样做的问题是,一旦对话框被销毁,就无法重新打开它。有人可以试试代码,看看他们是否能得到结果?我有这样的代码:

 Protected Sub btn_dialog_Click(sender As Object, e As System.EventArgs) Handles btn_dialog.Click

    litChart.Text = GetScript("Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce")

 Sub End

 Private Function GetScript(ByVal comment As String) As String
    Dim sb As New StringBuilder


    sb.AppendLine("<p style='max-width: 500px; text-align: left;'>")
    sb.AppendLine(comment)
    sb.AppendLine("</p>")
    Return sb.ToString

 End Function

【问题讨论】:

    标签: jquery html events


    【解决方案1】:

    你应该销毁它

        $("#dialog_detail").dialog({ autoOpen: false, width: 'auto', 
         open: function (event, ui) { __doPostBack('<%=btn_dialog.UniqueID %>', ''); },
         close: function (event, ui) { $("#dialog_detail").dialog("destroy"); }
        });
    

    【讨论】:

    • 是的,destroy的问题是你不能再重新打开对话框了。
    • 我想到了,但是当它已经如代码所示初始化时,你会怎么做呢?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-13
    • 1970-01-01
    相关资源
    最近更新 更多