我正在制作一个简单的jQuery导航系统,但我对此并不陌生,因为以下代码可能会降级...
HTML:
<ul id="main-nav">
<li><a href="../" id="home">HOME</a></li>
<li class="pipe">|</li>
<li id="about">ABOUT US</li>
<li class="pipe">|</li>
<li id="projects">PROJECT TYPES</li>
<li class="pipe">|</li>
<li id="reducing">REDUCING EMISSIONS</li>
<li class="pipe">|</li>
<li id="carbon">CARBON MARKETS</li>
<li class="pipe">|</li>
<li id="FAQs">FAQs</li>
</ul>
jQuery的:
$(function () {
$("#main-nav li:not('.pipe')").hover(function () {
var $this = $(this).attr("id");
$('#nav-strip2 ul.sub-nav').hide();
$("#nav-" + $this).show();
});
});
显示/隐藏工作得很好,唯一的问题是当管道悬停在它上面时隐藏一切。菜单需要在<li>
s中进行组合,而不仅仅是<a>
s,但它并不是真正相关且长的。
我正在尝试将.hover()内容排除在与.pipe类相关的情况下,但没有任何乐趣。我究竟做错了什么?任何帮助赞赏。我确信有一种方法可以排除没有附加ID的<li>
s,这样可以节省将.pipe类分配给所有<li>
的内容。唉,我还没有jQuery能够解决这个问题!
感谢。
答案 0 :(得分:6)
使用:not()
as a selector时,请勿在括号内使用引号:
$("#main-nav li:not(.pipe)")
答案 1 :(得分:1)
试试这个:
$(function () {
$("#main-nav li").not('.pipe').mouseenter(function () {
$('#nav-strip2 ul.sub-nav').hide();
$("#nav-" + this.id).show();
});
});