我正在尝试做一个带有下拉菜单的垂直菜单,可以通过箭头切换激活,同时仍然保持顶级链接处于活动状态和可点击状态。我正在使用自定义 CMS,因此我对如何使这项工作有一些限制。
HTML
<ul class="topnav">
<li class="tn_first">
<span></span><a class="topmenu" href="/default.asp">Home</a>
</li>
<li class="tn_mid">
<span></span><a class="topmenu" href="/listings.asp">My Listings</a>
<ul class="subnav">
<li class="sn_first">
<a class="submenu" href="#">Listing 1</a>
</li>
<li class="sn_mid">
<a class="submenu" href="#">Listing 2</a>
</li>
<li class="sn_last">
<a class="submenu" href="#">Listing 3</a>
</li>
</ul>
</li>
<li class="tn_last">
<span></span><a class="topmenu" href="/links.asp">System Pages</a>
<ul class="subnav">
<li class="sn_first">
<a class="submenu" href="#">Page 1</a>
</li>
<li class="sn_mid">
<a class="submenu" href="#">Page 2</a>
</li>
<li class="sn_last">
<a class="submenu" href="#">Page 3</a>
</li>
</ul>
</li>
</ul>
所以我有一个非常简单的 UL LI 菜单系统。我在顶层导航的模板中添加了一个 span 标签,我想将其用作切换开关。跨度可以更改为任何内容,这正是我目前所拥有的。
我遇到的问题是,鉴于这是一个模板系统,我可以选择将跨度放入,但不能根据 ul.subnav 是否存在于同一个 li 中有条件地显示它。因此,我需要某种方式将 display:block 应用于实际满足此条件的那些,然后我将默认 display:none 其他跨度。
我尝试使用此解决方案,它确实有效,但它不适用于多个下拉菜单,它似乎只有在您的菜单结构中有一个下拉菜单实例时才有效。
jQuery 切换下拉菜单 和 http://jsfiddle.net/hXNnD/1/
Javascript
jQuery(document).ready(function () {
var subMenu = jQuery("li ul li");
var linkClick = jQuery("ul li").filter(":has(ul)");
subMenu.hide();
linkClick.click(function (e) {
e.preventDefault();
subMenu.slideToggle("fast");
});
});
我创建了另一个具有 2 个子 UL 的示例,因此您可以看到代码在哪里下降。