【发布时间】:2012-02-09 13:38:36
【问题描述】:
我正在学习 jquery 和 css。 我有看起来像这样的菜单项。你可以在这里看到 css,html,jquery http://jsfiddle.net/rZR2Y/
html
<div id="nav">
<ul>
<li><a href="#">Home</a>
<ul>
<li><a href="#">Home1</a></li>
<li><a href="#">Home2</a></li>
<li><a href="#">Home3</a></li>
</ul>
</li>
<li><a href="#">Blog</a>
<ul>
<li><a href="#">Blog1</a></li>
<li><a href="#">Blog2</a></li>
<li><a href="#">Blog3</a></li>
</ul>
</li>
<li><a href="#">About</a></li>
</ul>
</div>
jquery
$( document ).ready( function() {
$( '#nav > ul > li' ).click( function() {
$( '#nav > ul' ).children('li').removeClass();
$( this ).addClass( 'selected' );
});
$( '#nav > ul > li > ul > li' ).click( function() {
$( '#nav > ul' ).children('li').removeClass();
$( this ).parent('li').addClass( 'selected' );
});
});
css
#nav .selected a{background:red;display:block}
我想要的是,当我单击子 li 项目即 Home1/home2/home3 时,应突出显示父 li 即 Home。
我在选择器选择中做错了什么。此外,也欢迎任何其他更好的解决方案。
谢谢。
更新: 对不起,我原来的标记是错误的。关闭 sub li 自然应该在所有子菜单项之后。 现在这会改变所有 jquery 吗?
感谢您的回答。 我将非常感谢一些解释,以便我也了解我做错了什么。
更新 2: 更新我的标记后,还有这样的css
#nav .selected > a{background:red;display:block}
即使是我原来的解决方案也有效。刚学了一些css和jquery的东西。感谢大家。 更新的小提琴与更新的标记和 css 和原始 jquery 在这里 http://jsfiddle.net/rZR2Y/26/
【问题讨论】:
-
@Yoshi 我现在已经在这里添加了所有代码。
-
附带说明:您的标记不正确。结束的
<li>s 应该在嵌套的<ul>s 之后。 ;) -
哦,是的,我现在展示那个。现在,当我按照您所说的进行更改时,我的整个查询选择都会更改。
-
可能是选择器需要更改。但总的来说,我认为你的选择器对于这样一个简单的任务来说太复杂了。 (我只使用简单的选择器添加了答案)
标签: javascript jquery css menu