1

我正在使用带有 asp.net 控件的以下 JQuery UI 代码。

<script type="text/javascript">

        $(document).ready(function () {

            $(".Accordion").accordion({
                heightStyle: "content"
            });

            $(".special").button();

            $(".radio").buttonset();

            //$(".tabs").tabs();
            $(".tabs").tabs();

        });

    </script>

并且代码运行良好,直到我决定将所有控件放在更新面板中。在回发时,所有样式都从控件中删除。问题是什么?

4

2 回答 2

4

您应该修改您的脚本,因为 $(document).ready() 不适用于更新面板:

function InitCss() {

        $(".Accordion").accordion({
            heightStyle: "content"
        });

        $(".special").button();

        $(".radio").buttonset();

        //$(".tabs").tabs();
        $(".tabs").tabs();

    }

Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(InitCss);

代码隐藏相同:

protected void Page_Load(object sender, EventArgs e)
    {
 if (!this.Page.ClientScript.IsStartupScriptRegistered("InitCss"))
        {
            string script = @"function InitCss() {

        $("".Accordion"").accordion({
            heightStyle: ""content""
        });

        $("".special"").button();

        $("".radio"").buttonset();

        //$("".tabs"").tabs();
        $("".tabs"").tabs();

    }

Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(InitCss);";
            ScriptManager.RegisterStartupScript(Page, Page.GetType(), "InitCss", script, true);
        }
}
于 2013-05-30T10:33:07.513 回答
1

您的初始化将仅在文档准备就绪时运行(而不是在回发时)。由于您将控件放在 UpdatePanel 中,因此任何内容都会在回发后更新。您也应该在回发后调用初始化。将此代码添加到现有脚本旁边:

<script type="text/javascript">
var prm = Sys.WebForms.PageRequestManager.getInstance();

prm.add_endRequest(function(s, e) {
  $(".Accordion").accordion({
                heightStyle: "content"
            });

            $(".special").button();

            $(".radio").buttonset();

            //$(".tabs").tabs();
            $(".tabs").tabs();
}); 
</scipt>
于 2013-05-30T10:40:05.720 回答