我在一个小型 asp.net 项目中使用的水平导航有问题。导航包含登录、配置文件和注销锚点,如果您已登录或未登录,则会显示这些锚点。
我通过在后面的代码中设置 .Visible 属性来实现这种行为。
现在我想在每个元素之后添加一个管道作为“分隔符”。这不能是实际列表项本身的一部分,因为它会破坏 a:hover 效果。
但即使元素不在DOM 树中,也会显示管道分隔符。看起来像
登录 | | |
我试过用
if ($("li.nav-item").length == 0) {
$('span.divider').remove();
}
if ($("li.nav-item").length > 0 && $("li.nav-item").is(':visible')) {
$('<span class="divider"> | </span>').appendTo('li.nav-item');
}
但这不起作用。我该如何解决这个问题?
亲切的问候。
/edit: html 标记(编辑的 ID)
<ul id="navigation">
<li class="nav-item"><asp:HyperLink ID="link1" runat ="server" Text="LoremIpsum" NavigateUrl="#" /></li>
<li class="nav-item"><asp:LinkButton ID="LoremIpsum" runat ="server" Text="LoremIpsum" PostBackUrl="~/#.aspx" /></li>
<li class="nav-item"><asp:HyperLink ID="link2" runat="server" Text="LoremIpsum" NavigateUrl="#.aspx"/></li>
<li class="nav-item"><asp:HyperLink ID="linkLogin" runat="server" Text="Login" NavigateUrl="~/login.aspx"/></li>
<li class="nav-item"><asp:HyperLink ID="linkProfile" runat="server" Text="Profile" NavigateUrl="~/profile.aspx" Visible="false"/></li>
<li class="nav-item"><asp:HyperLink ID="linkLogout" runat="server" Text="Logout" NavigateUrl="~/logout.aspx" Visible="false"/></li>
<li><asp:HyperLink ID="LoremIpsum" runat="server" Text="LoremIpsum" NavigateUrl="~/nutzungsbedingungen.aspx"/></li>
</ul>
if (Session["svar_loggedin"] != null)
{
linkLogin.Visible = false;
linkProfile.Visible = true;
linkLogout.Visible = true;
}
else
{
linkLogin.Visible = true;
linkProfile.Visible = false;
linkLogout.Visible = false;
}