我有这个菜单:
<ul id="mainmenu" class="nav menu sf-menu responsive-menu superfish">
<li class="active">
<a href="index.php">Home</a>
</li>
<li class="">
<a href="search.php">Search</a>
</li>
<li class="">
<a href="search.php">Browse</a>
</li>
</ul>
这个小小的脚本:\
var selector = '#mainmenu li';
$(selector).on('click', function() {
$(selector).removeClass('active');
$(this).addClass('active');
});
我想要的是,当页面第一次加载home
成为活动链接时。然后,当用户在另一个页面上导航时,active
类将应用于点击的li
。问题是,当我点击另一个li
时,会添加该类,然后快速删除。可能是什么问题?
谢谢!
答案 0 :(得分:0)
我认为问题在于,当您单击某个元素时,您将被重定向,并再次呈现该页面。
var selector = '#mainmenu li';
$(selector).on('click', function(event) {
event.preventDefault();
$(selector).removeClass('active');
$(this).addClass('active');
});
尝试禁用重定向事件以确认这一点。
答案 1 :(得分:0)
刚刚关闭你提供的详细信息,我假设你没有加载AJAX,所以当你点击链接时,是的,这个类被添加,然后你被带到不同的页面加载新鲜
除非你通过AJAX加载外部链接,否则没有真正的方法可以实现你想要的javascript,我无法真正为你提供一个有效的代码示例,因为它很少适合所有人。
http://api.jquery.com/load/可能是你感兴趣的东西。它允许你将一个外部页面加载到一个元素中(即你的主要内容元素)
答案 2 :(得分:0)
重定向使脚本(如果我可以说)&#39;短暂的&#39;因为脚本会在第一页加载,然后在第二页中加载,而不知道链接是否被点击过。
答案 3 :(得分:0)
当您点击链接时,它会始终加载新页面并删除您添加的课程。以下代码段将解决您的问题。
var pgurl = window.location.href;
$("#mainmenu li a").each(function(){
$(this).siblings().removeClass("active");
if(pgurl.indexOf($(this).attr("href"))>-1){
$(this).addClass("active");
}
})
答案 4 :(得分:0)
单击链接后,看起来页面会刷新。尝试根据其href将活动类添加到li。
示例代码:
var url = window.location;
jQuery('a[href="'+url+'"]').parent().addClass('active');