我有一个简单的 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 -->
点击 LinkButton 后(PostBack),页面在 IE11 , Chrome , Opera 中闪烁。 同时在 Firefox 中一切正常。
看起来它会在页面上将 UL 呈现为列表,然后将其设为菜单,并在浏览器中显示第一步。
帮我解决这个问题,因为页面有很多PostBack动作。
答案 0 :(得分:1)
正如您所提到的,ASP.Net LinkButton会进行回发。然后从服务器重新加载整个页面,以便重新加载菜单,您将看到重新绘制的页面。
您可以将非静态内容放在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 来解决,但由于某些原因这不适合我