在对话框中加载aspx页面时,JQuery对话框未再次打开

在对话框中加载aspx页面时,JQuery对话框未再次打开,jquery,asp.net,html,jquery-ui,jquery-dialog,Jquery,Asp.net,Html,Jquery Ui,Jquery Dialog,我已经检查了类似的问题,但没有一个给我一个解决方案。。。这就是为什么发布这个问题。。所以请给我一个解决方案,而不是投票否决 我正在对话框中加载一个aspx页面。它第一次运行正常,但如果我再次关闭并重新打开它。。它没有被打开 这是我处理对话框脚本的default.aspx <html> <head> <script type="text/javascript"> $(d

我已经检查了类似的问题,但没有一个给我一个解决方案。。。这就是为什么发布这个问题。。所以请给我一个解决方案,而不是投票否决

我正在对话框中加载一个aspx页面。它第一次运行正常,但如果我再次关闭并重新打开它。。它没有被打开

这是我处理对话框脚本的default.aspx

       <html>
        <head>
            <script type="text/javascript">
                    $(document).ready(function() {
                    $("#thedialog").dialog({
                            autoOpen: false,
                            modal: true,
                            position: 'center',
                            width: 900,
                            open: function() {
                            $('#thedialog').load("AddDetails.aspx");
                            }
                        });

                         $('#link').click(function() {
                          $('#thedialog').dialog('open');

                        });

                    });
             </script>
        </head>
        <body>
            <div id="thedialog" style="display: none; overflow: hidden">
           <span id="link" style="color: #88b807; margin-left: 839px;
                            margin-top: -12px; cursor: pointer; display: block">Create</span>
</div>
        </body>
        </html>

$(文档).ready(函数(){
$(“#对话框”)。对话框({
自动打开:错误,
莫代尔:是的,
位置:'中间',
宽度:900,
打开:函数(){
$('thedialog').load(“AddDetails.aspx”);
}
});
$(“#链接”)。单击(函数(){
$('thedialog')。对话框('open');
});
});
创造
这是我的AddDetails.aspx

<body>
    <form id="form1" runat="server">
    <div>
        <table id="table" style="border-spacing: 7px 7px; margin-left: 5px">
            <tr>
                <td>
                    <span class="SubHeading">Private Space Name </span>
                </td>
                <td>
                    <asp:TextBox ID="txt_spacename" runat="server" />
                </td>
            </tr>
            <tr>
                <td>
                    <span class="SubHeading">Private Space Description </span>
                </td>
                <td>
                    <asp:TextBox ID="txt_spacedesc" TextMode="MultiLine" runat="server" />
                </td>
            </tr>
</table>
</div>
</form>
</body>

专用空间名称
私人空间描述
如果我只是简单地打开一个对话框,它将被打开,但如果我在对话框中加载一个页面,它将不会打开,而不是加载一个页面


帮助…

从更新的代码来看,您单击的链接似乎位于加载ajax调用的div中。如果是这种情况,则加载对话框的单击事件仅绑定一次(在初始页面加载时)。当再次加载link元素时(我假设它在加载的ajax响应中),它不再绑定click事件

要解决此问题,您可以:

  • 将链接移到#dialog div元素之外(看起来它现在没有被正确关闭)
  • 修改javascript以添加委托,这样即使页面(DOM)发生更改,单击事件也会在该类型的元素上激发,例如:

    $("#thedialog").delegate("#link", "click", function () {
        $('#thedialog').dialog('open');
        return false;
    });
    
    如果对话框本身有一个#link元素,那么选项2可能会产生一些奇怪的结果——如果解决了这个问题,我会选择第一个选项


  • 更新:

    上面的代码可以在我的浏览器上使用,但为了确保我会尝试下面的代码,看看它是否有效,我想可能是jquery/jquery ui的版本不正常或者不是最新的

    <html>
    <head>
    <title>Test dialog page</title>
    <link href="http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css" rel="stylesheet"
        type="text/css" />
    <script src="http://code.jquery.com/jquery-1.8.3.js" type="text/javascript"></script>
    <script src="http://code.jquery.com/ui/1.9.2/jquery-ui.js" type="text/javascript"></script>
    <script type="text/javascript">
        $(document).ready(function () {
            $("#thedialog").dialog({
                autoOpen: false,
                modal: true,
                position: 'center',
                width: 900,
                height: 300,
                open: function () {
                    $('#thedialog').load("AddDetails.aspx");
                }
            });
    
            $('#link').click(function () {
                $('#thedialog').dialog('open');
            });
    
        });
    </script>
    </head>
    <body>
    <div id="thedialog" style="display: none; overflow: hidden">
    </div>
    <span id="link" style="color: #88b807; cursor: pointer; display: block">Create</span>
    </body>
    </html>
    
    
    测试对话框页面
    $(文档).ready(函数(){
    $(“#对话框”)。对话框({
    自动打开:错误,
    莫代尔:是的,
    位置:'中间',
    宽度:900,
    身高:300,
    打开:函数(){
    $('thedialog').load(“AddDetails.aspx”);
    }
    });
    $(“#链接”)。单击(函数(){
    $('thedialog')。对话框('open');
    });
    });
    创造
    
    我想尝试/推荐的其他东西:

    • 从AddDetails.aspx中删除包装正文标记(除非您 以非ajax方式使用它)。还要确保它没有引用母版页
    • 确保页面上没有正在运行的其他javascript-否 实例的AddDetails页面中引用的脚本
    • 如果您仍然存在问题,请尝试在Firebug或其他浏览器中的等效浏览器中查看控制台-是否报告了错误,或者是否在无声中失败

    是对话框本身没有打开,还是对话框正在打开,但内容是空的,还是与以前相同?使用您提供的js,我没有问题-每次对话框打开时,它都会对指定的地址进行新的异步调用,并将其加载到对话框中。页面上是否有更多的js或html?我看不到id为link的元素(用于打开对话框)或提交所加载表单的方法。@Miguel-F对话框未打开。@KevD我在问题中编辑过。。请看我的编辑你真的没有对话框html的结束标记吗?还是只是在你的帖子里?(“Dialog”div)我在答案中添加了我正在使用的代码,该代码工作正常-试一试,看看它是否仍然失败。