ASP.NET jQuery 菜单在回发时闪烁

ASP.NET jQuery Menu blinks on postback

我有一个简单的 aspx 页面,如下所示:

<!-- Other code -->
<script>
    $(function() {
        $( "#menu" ).menu();
    });
</script>
<ul class="menu">
    <li>Action1
        <ul>
            <li>Action1-1</li>
            <li>Action1-2</li>
        </ul>
    </li>
</ul>
<asp:LinkButton ID="LinkButton1" runat="server" Text="Button" />
<!-- Other code -->

单击 LinkBut​​ton 时(回发),页面在 IE11Chrome[ 中闪烁=29=]、歌剧。 同时在Firefox一切正常

看起来它在页面上呈现 UL 作为列表,然后将其作为菜单,第一步在浏览器中可见。

帮我解决这个问题,因为页面有很多PostBack动作。

尝试将所有二级和其他级别的 ul 项目设置为 display:none 并将以下行添加到您的初始化字符串中:

$(function () {
    $('.menu').menu();
    $('.menu li ul').show();
});

如您所述,ASP.Net LinkBut​​ton 执行回发。然后,这会从服务器重新加载整个页面,这样您的菜单就会重新加载,您将看到页面被重新绘制。

您可以将 non-static 内容放在 UpdatePanel 中,以便仅加载该页面部分。

<!-- Other code -->
<script>
    $(function() {
        $( "#menu" ).menu();
    });
</script>
<ul class="menu">
    <li>Action1
        <ul>
            <li>Action1-1</li>
            <li>Action1-2</li>
        </ul>
    </li>
</ul>
<asp:UpdatePanel>
    <asp:LinkButton ID="LinkButton1" runat="server" Text="Button" />
    <!-- Other code -->
</asp:UpdatePanel>

要使用 UpdatePanel,您需要包含一个 ScriptManager,可能在您的母版页中。快速搜索 UpdatePanel 应该会为您提供实现此功能所需的信息。

设置后:

<ul class="menu ui-menu ui-widget ui-widget-content">
    <li>Action1
        <ul style="display: none">
            <li>Action1-1</li>
            <li>Action1-2</li>
        </ul>
    </li>
</ul>

眨眼变得不那么烦人了。

但它并不能防止眨眼。 问题可以通过 UpdatePanel 解决,但由于某些原因这不适合我