我是JQuery的新手,但我发现它非常有用。我正在尝试使用JQuery突出显示用户当前页面的导航项。我已经尝试了几种类似的技术,但我无法正常工作,我想知道是不是因为我使用的是dropmenu.js,这可能会导致一些问题。
我创建了一个名为.selected的CSS类,当手动应用于导航项时,它会执行我需要的操作。然后我得到了以下JQuery代码:
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script type="text/javascript">
$('#nav-one li a').click(function() {
$(this).closest("li").addClass('selected').siblings().removeClass('selected');
return(false);
});
</script>
我的菜单看起来像这样:
<ul id="nav-one" class="dropmenu css-only">
<li><a href="index.html">Home</a></li>
<li><a href="our_cupcakes.html">Our Cupcakes</a>
<ul>
<li><a href="birthday_cupcakes.html">Birthday Cupcakes</a></li>
<li><a href="new_baby_cupcakes.html">New Baby Cupcakes</a></li>
<li><a href="anniversary_cupcakes.html">Anniversary Cupcakes</a></li>
<li><a href="just_because_cupcakes.html">Just Because Cupcakes</a></li>
<li><a href="seasonal_cupcakes.html">Seasonal Cupcakes</a></li>
<li><a href="special_order_cupcakes.html">Special Order Cupcakes</a></li>
</ul>
</li>
<li><a href="flavours_and_colours.html">Flavours & Colours</a></li>
<li><a href="faqs.html">FAQs</a>
<ul>
<li><a href="faqs.html">General questions</a></li>
<li><a href="faqs.html#ingredients">Ingredients</a></li>
<li><a href="faqs.html#delivery">Delivery & Pick-up</a></li>
<li><a href="faqs.html#about">About us</a></li>
</ul>
</li>
</li>
<li><a href="order_cupcakes.php">Order Cupcakes</a> </li>
</ul>
Dropmenu.js我的下拉菜单工作,并且有一个单独的CSS,但我不能看到这会阻止我使用JQuery将.selected类应用于导航项,但我可能是错的。
有人能给我一些关于我可能出错的地方吗?最终代码将放在我妻子的家庭烘焙网站http://cupcakes.ladybirdbakery.co.uk
上非常感谢。
蚂蚁
答案 0 :(得分:0)
编辑2 :
我没有意识到你试图突出显示用户所在页面的菜单选项。这是一个完全不同的事情,你现在正在做的是接近我的错误方法,这就是原因:当用户点击链接时,类selected
被添加到<li>
。但随后会加载全新页面。 JavaScript(和jQuery)对网页所做的更改不会在以后的网页中保留。 这意味着加载新页面时,<li>
都没有s有selected
类,直到有人点击一个(但接着另一个页面会立即加载,因此他们看不到li
突出显示)。
至于如何实现这一点,我建议只需手动将类selected
添加到每个HTML文件中的正确li
。但如果您真的想使用JavaScript,请输入以下代码:
$(function(){ // this is a shortcut for $(document).ready(function(){
var filename = location.pathname.substring(location.pathname.lastIndexOf('/')+1)
$('a[href="' + (filename ? filename : 'index.html') + '"]').parent('li').addClass('selected')
})
首先我们创建一个变量filename
并将其设置为当前页面的文件名。然后,我们找到<a>
属性等于文件名的所有href
,获取其父<li>
元素,然后添加类selected
。
我希望这有帮助。如果您有更多问题或疑问,请告诉我。谢谢!