javascript - 菜单在 IE 中的行为不同

标签 javascript html css asp.net-mvc internet-explorer

我正在开发一个在 Chrome 中按预期运行的网站,但在 Internet Explorer 中打开它时发现导航菜单不合适。

调查问题 a 发现并非所有列表项都包含在主 ul 中,并且 2 个列表项没有正确的类。

有问题的那个:

enter image description here

正确的是:

enter image description here

我的元素是使用 ASP.NET MVC 4 和 Umbraco CMS 制作的。菜单 View 如下所示:

<ul class="nav">
<li class="@(CurrentPage.Url == "/" ? "current_page_item" : null)"><a class="Lvl1 home" href="/">Home</a></li>

@foreach (var item in menuItems)
{
<li class="@(CurrentPage.Id == item.Id ? "current_page_item" : null) Col1">
    <a class="lvl1 parent" href="@item.Url">@item.Name</a>

    @{ var subMenuItems = item.Children.Where("Visible"); }

    @if (subMenuItems.Count() > 0)
    {
        <ul>
            <li>
            @foreach (var sub in subMenuItems)
            {
                if (sub.HasValue("menuItemImage"))
                {
                    <div class="NavItemHolder">
                        <div class="NavItemImage">
                            <a href="@sub.Url"><img src="@Umbraco.Field(sub, "menuItemImage", recursive: true)"></a>
                        </div>
                        <div class="NavItemDesc">
                            <a href="@sub.Url">
                            <span>@sub.Name</span><br>
                            <span>@sub.menuItemInfo</span>
                            </a>
                        </div>
                    </div>
                }
                else
                {<li><a class="parent" href="@sub.Url">@sub.Name</a></li>}
            }
            </li>
        </ul>
    }
</li>
}
</ul>

这在 Chrome 中工作正常,但似乎无法找到 IE 的问题。

最佳答案

您应该为每个子菜单创建一个新的列表项,而不是将所有子菜单包装在一个列表项中(或者以其他方式嵌套列表项,而不是使用 ul 包装器将它们分成适当的嵌套列表)。

<ul class="nav">
<li class="@(CurrentPage.Url == "/" ? "current_page_item" : null)"><a class="Lvl1 home" href="/">Home</a></li>

@foreach (var item in menuItems)
{
<li class="@(CurrentPage.Id == item.Id ? "current_page_item" : null) Col1">
    <a class="lvl1 parent" href="@item.Url">@item.Name</a>

    @{ var subMenuItems = item.Children.Where("Visible"); }

    @if (subMenuItems.Count() > 0)
    {
        <ul>
            @foreach (var sub in subMenuItems)
            {
                <li>
                if (sub.HasValue("menuItemImage"))
                {
                    <div class="NavItemHolder">
                        <div class="NavItemImage">
                            <a href="@sub.Url"><img src="@Umbraco.Field(sub, "menuItemImage", recursive: true)"></a>
                        </div>
                        <div class="NavItemDesc">
                            <a href="@sub.Url">
                            <span>@sub.Name</span><br>
                            <span>@sub.menuItemInfo</span>
                            </a>
                        </div>
                    </div>
                }
                else
                {<a class="parent" href="@sub.Url">@sub.Name</a>}
                </li>
            }
        </ul>
    }
</li>
}
</ul>

关于javascript - 菜单在 IE 中的行为不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25872978/

相关文章:

Javascript 将 URL 转换为 ‘anchor’ 标签并将标签作为字符串存储在数组中

SVG 文档中的 HTML 按钮

html - 在具有相等空间分布的 flex 元素之间添加分界线

jquery - 如何在悬停时显示图像之上的图像

html - CSS悬停导航/大理石菜单

javascript - 为网站创建可访问的工具提示

javascript - 导航栏 jQuery 不工作

javascript - 平移 500 个特征时 OpenLayers 3 性能低下

javascript - 如何使用javascript在页面上播放音频?

CSS 规则新手