使用jquery将ul直接放在一个打开的类下面
我有以下几点jquery:使用jquery将ul直接放在一个打开的类下面,jquery,navigation,Jquery,Navigation,我有以下几点jquery: // Code for Side Navigation $("#sideNav ul li:not(:has(li.current))") .find("ul").hide().end() // Hide all other ULs .hoverIntent( function(){ $(this).children('ul').slideDown('fast'); },
// Code for Side Navigation
$("#sideNav ul li:not(:has(li.current))")
.find("ul").hide().end() // Hide all other ULs
.hoverIntent(
function(){
$(this).children('ul').slideDown('fast');
},
function(){
// $(this).children('ul').slideUp('fast');
}
);
它向上和向下滑动导航,使类当前
打开的所有li保持打开状态。
我想对其进行更改,以便如果li具有当前的类
,则其正下方的ul也将打开,但低于该级别的其他ul将保持关闭
以下是HTML结构:
<ul>
<li>Category 1
<ul>
<li class="current">Currently Open
<ul>
<li>Sub Cat 1 - should show
<ul><li>Should not Show</li></ul>
</li>
<li>Sub Cat 2 - should show</li>
</li>
</ul>
</li>
<li> Category 2
<ul><li>Should not Show></li></ul>
</li>
</ul>
- 第一类
- 当前打开
- 子类别1-应显示
- 不应显示
- 子类别2-应显示
- 第2类
- 不应显示>
首先,您需要修复html。第二个嵌套UL未关闭。第二种方法是将当前轨迹中的所有LI元素指定给.current类
<ul>
<li class="current">Category 1
<ul>
<li class="current">Currently Open
<ul>
<li>Sub Cat 1 - should show
<ul><li>Should not Show</li></ul>
</li>
<li>Sub Cat 2 - should show</li>
</ul>
</li>
</ul>
</li>
<li> Category 2
<ul><li>Should not Show</li></ul>
</li>
这应该可以在没有javascript的情况下解决您的问题。这就是你想要的吗
如果需要添加悬停效果,则只需将.current类添加到被悬停的li
我添加了一些鼓舞人心的jquery代码(还没有测试过),这些代码应该可以帮助您:
$('li:has(ul)').bind('mousein',function(){
$(this).find('ul').slideDown();
});
$('li:has(ul)').bind('mouseout',function(){
$(this).find('ul').slideUp();
});
想一想:
增加
$("#sideNav ul li.topCurrent").find("ul").show();
$("#sideNav ul li.topCurrent").find("ul li:not(:has(li.current)) ul").hide();
到jquery代码的底部。谢谢您的帮助。。。我很感激。
$("#sideNav ul li.topCurrent").find("ul").show();
$("#sideNav ul li.topCurrent").find("ul li:not(:has(li.current)) ul").hide();