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

时间:2016-01-20 13:12:34

标签: asp.net jquery-ui 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 后(PostBack),页面在 IE11 Chrome Opera 中闪烁。 同时在 Firefox 中一切正常。

看起来它会在页面上将 UL 呈现为列表,然后将其设为菜单,并在浏览器中显示第一步。

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

3 个答案:

答案 0 :(得分:1)

正如您所提到的,ASP.Net LinkBut​​ton会进行回发。然后从服务器重新加载整个页面,以便重新加载菜单,您将看到重新绘制的页面。

您可以将非静态内容放在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可以获得实现此目的所需的信息。

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

设置后:

<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 来解决,但由于某些原因这不适合我