Javascript 在菜单中突出显示当前项和所有上一项
Javascript 在菜单中突出显示当前项和所有上一项,javascript,html,css,Javascript,Html,Css,这里我附上了我的菜单栏。我的网页是完全滚动条页面转换类型(即,一个包含六个页面的页面,单击菜单项即可滚动)。当我单击菜单项时,菜单项的突出显示可能与所附图像中的一样。但现在我仍使用单个菜单项突出显示,与当前页面相同,但这里我需要的是,当我单击第四个菜单时,当前菜单项和所有以前的菜单项也需要突出显示。我如何进行此操作?此标记的假设: <span class="menuitem">Howdy</span> <span class="menuitem">Howdy&
这里我附上了我的菜单栏。我的网页是完全滚动条页面转换类型(即,一个包含六个页面的页面,单击菜单项即可滚动)。当我单击菜单项时,菜单项的突出显示可能与所附图像中的一样。但现在我仍使用单个菜单项突出显示,与当前页面相同,但这里我需要的是,当我单击第四个菜单时,当前菜单项和所有以前的菜单项也需要突出显示。我如何进行此操作?此标记的假设:
<span class="menuitem">Howdy</span>
<span class="menuitem">Howdy</span>
<span class="menuitem">Howdy</span>
<span class="menuitem">Howdy</span>
<span class="menuitem">Howdy</span>
此代码:
$('.menuitem').click(function(){
$('.menuitem').removeClass('menuActive');
$(this).prevAll().andSelf().addClass('menuActive');
});
这把小提琴:
编辑:与jQuery版本1.8和1.9+相关
在jQuery版本1.8中,创建了addBack()
方法,在版本1.9中删除了andSelf()
。对于jQuery 1.8及以后版本,请使用:
$('.menuitem').click(function(){
$('.menuitem').removeClass('menuActive');
$(this).prevAll().addBack().addClass('menuActive');
});
在这段代码中,效果是一样的
addBack()
还实现了一个选择器,以便在需要时减少添加回选择组的元素。
我使用了一个坚实的边界来实现效果,但你应该能够做到这一点与背景图像或边界图像
HTML
在演示中还有一点微不足道的jQuery,它在单击时将li类设置为活动(清除彼此的活动li类) 可爱的图片,但我们能看到一些代码吗?一个活生生的例子怎么样?来吧,伙计们,当我们读心术的时候,我上面的人是对的。使用@Tadeck-better CSS,我认为这很容易清理。另外,通常我会要求你展示你付出了多少努力,但这个问题很有趣,我可以试着去做。
$('.menuitem').click(function(){
$('.menuitem').removeClass('menuActive');
$(this).prevAll().addBack().addClass('menuActive');
});
<ul>
<li>one</li>
<li>two</li>
<li>three</li>
<li>four</li>
<li>five</li>
</ul>
ul{
overflow:hidden;
margin:1em;
float:left;
}
li{
float:left;
padding:.1em 0;
border-bottom:solid 5px #ccc; /* base state, grey */
cursor:pointer;
}
li + li{
padding-left:1em;
}
ul:hover li, /* all list items when the ul is hovered */
ul.active li, /* or all list items when the ul is "active" */
ul.active:hover li{ /* an override for below */
border-bottom-color:#34f; /* become blue */
}
li:hover ~ li, /* all list items after the hovered list item */
ul li.active ~ li, /* all list items after the active list item */
ul.active:hover li:hover ~ li{ /* an override for when the list is active and hovered */
border-bottom:solid 5px #ccc; /* back to grey */
}