0

我有一个非常基本的测试 asp.net Web 应用程序。有一个<asp:Button>弹出一个 jQuery 对话框。在此对话框中,还有另一个<asp:Button>使<div>标签可见,在此<div>标签中还有第三个<asp:Button>. 到目前为止一切正常。现在根据我的代码,第三个按钮应该会弹出第二个 jQuery 对话框,但这永远不会发生。我错在哪里?

这是我的aspx代码:

<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true"></asp:ScriptManager>

    <asp:Button ID="btn" runat="server" Text="btn" />
    <div id="div1">
        <asp:UpdatePanel ID="UpdatePanel2" runat="server">
            <ContentTemplate>
                <table>
                    <tr>
                        <td>
                            <asp:Button ID="btn1" runat="server" Text="btn1" OnClick="btn1_Click" />
                        </td>
                        <td>
                            <div id="div2" runat="server" visible="false">
                                <asp:Button ID="btn2" runat="server" Text="btn2" />
                            </div>
                        </td>
                    </tr>
                </table>
            </ContentTemplate>
        </asp:UpdatePanel>
    </div>

    <div id="div3" style="display:none">
        <h1>test</h1>
    </div>

这是 jQuery 的代码:

<script type="text/javascript">
        var dialogOpts = {
            resizable: false,
            bgiframe: true,
            autoOpen: false,
            width: "710px"
        };

        $('#div3').dialog(dialogOpts).parent().appendTo($("#form1"));;
        $(function () {
            $("#div3").dialog({
                maxWidth: 1050,
                maxHeight: 534,
                width: 1050,
                height: 534,
                resizable: false,
                autoOpen: false,
                buttons: {
                    Cancel: function () {
                        $(this).dialog("close");
                    }
                }
            });

            $("#btn2").click(function () {
                $("#div3").dialog("open");
                return false
            });
        });
    </script>
    <script type="text/javascript">
        var dialogOpts = {
            resizable: false,
            bgiframe: true,
            autoOpen: false,
            width: "710px"
        };

        $('#div1').dialog(dialogOpts).parent().appendTo($("#form1"));;
        $(function () {
            $("#div1").dialog({
                maxWidth: 1050,
                maxHeight: 534,
                width: 1050,
                height: 534,
                resizable: false,
                autoOpen: false,
                buttons: {
                    Cancel: function () {
                        $(this).dialog("close");
                    }
                }
            });

            $("#btn").click(function () {
                $("#div1").dialog("open");
                return false
            });
        });
    </script>

它被放置在正文中,到目前为止只有第一个 jQuery 弹出。这是我的 c# 函数,它使第二个<div>标签可见:

 protected void btn1_Click(object sender, EventArgs e)
    {
        div2.Visible = true;
    }
4

1 回答 1

2

visible = false

从本质上防止元素呈现。如果您为未渲染(未渲染,未显示:无或可见性:隐藏,您的按钮实际上不驻留在页面中)注册 onclick 事件,则 onclick 事件根本不会注册到任何内容。在更新面板中显示按钮后,单击时不会运行任何内容,因为未设置单击处理(按钮在

$("#btn2").click(function () {
            $("#div3").dialog("open");
            return false
        });

)

于 2013-10-19T19:30:21.620 回答