li
项后。我将active
属性设置为css类,但li
有一个转发另一个页面的链接。活跃的css消失了吗?这该怎么做?我已经使用localstorage缓存我选择的旧项目。我找不到任何解决方案。如何在刷新后进行活动类设置?刷新页面后如何设置活动类?
<script type="text/javascript">
$(document).ready(function () {
$("li").click(function () {
var id = $(this).attr("id");
console.log(id);
var selectedolditem = localStorage.getItem('selectedolditem');
if (selectedolditem != null) {
$('#' + selectedolditem).siblings().find("active").removeClass("active");
$('#' + selectedolditem).addClass("active");
localStorage.clear();
return;
}
$('#'+id).siblings().find("active").removeClass("active");
$('#' + id).addClass("active");
localStorage.setItem("selectedolditem", id);
});
});
答案 0 :(得分:9)
您的代码存在的问题是您正在尝试单击它来检索它。这是错误的逻辑。正确的逻辑是:当页面加载时,检索它。单击li
时,将其存储。使用find("active")
时也遇到问题,您需要使用类字符.
,否则它将搜索标记名为active
而不是类的元素。
$(document).ready(function () {
$("li").click(function () {
var id = $(this).attr("id");
$('#' + id).siblings().find(".active").removeClass("active");
// ^ you forgot this
$('#' + id).addClass("active");
localStorage.setItem("selectedolditem", id);
});
var selectedolditem = localStorage.getItem('selectedolditem');
if (selectedolditem != null) {
$('#' + selectedolditem).siblings().find(".active").removeClass("active");
// ^ you forgot this
$('#' + selectedolditem).addClass("active");
}
});
答案 1 :(得分:7)
尝试以下操作。
$('li').each(function(){
if(window.location.href.indexOf($(this).find('a:first').attr('href'))>-1)
{
$(this).addClass('active').siblings().removeClass('active');
}
});
答案 2 :(得分:1)
请尝试以下操作。
$(document).ready(function() {
$('.active').removeClass('active');
var currurl = window.location.pathname;
var val=$('li:has(a[href="'+currurl+'"])').addClass('active');
});