javascript - 如何在页面刷新时保持选中/事件的 HTML 链接颜色?

标签 javascript jquery html css page-refresh

编辑:

我想保持选中状态在页面刷新时保持 HTML 链接颜色。我尝试了其他已经回答但对我不起作用的问题。

例如:

当我单击 HTML 链接分类 HTML 链接测验时,它会将颜色更改为红色,并在页面刷新时保持该颜色。

HTML

<div id="col-navigation">
        <ul>
            <li> 
                <a href="#"> Quizzes </a>
            </li>
            <li> 
                <a href="#"> Categories </a>
            </li>
            <li> 
                <a href="#"> Jump </a>
            </li>
        </ul>
</div>

<div id="quizzes"> 
     Quizzes! <!-- default showed -->
</div>

<div id="categories" style="display:none">
     Categories! <!-- I have table here, plain text is just a example -->
</div>

 <div id="jump" style="display:none">
     Jump! <!-- I have table here, plain text is just a example -->
</div>

JS/JQUERY:

//SHOW AND HIDE
    $('#col-navigation a').click(function(){
   $('#quizzes,#categories,#jump').show().not('#' + $.trim($(this).text()).toLowerCase()).hide();
});

//STAY THE COLOR OF ACTIVE LINK
$('li').click(function() {
  $(this).siblings().find('a').removeClass('focus');
  $(this).find('a').addClass('focus');
});

CSS

    li a {
  padding: 20px;
  display: block;
}

li a:hover {
  background-color: white;
}

.focus {
  background-color: lightblue;
  color: red;
}

li a {
  color: inherit;
}

最佳答案

这是应该在 DOM 就绪时触发的 JS:

$('#col-navigation a').click(function(e){
   e.preventDefault();
   $(".content").hide().filter( $(this).data("target") ).show();
   localStorage.setItem('target', $(this).data("target"));
});
var target = localStorage.getItem('target');
!target || $('.content').hide().filter(target).show();

这是 HTML;添加了 data- 属性和 .content 类:

<div id="col-navigation">
        <ul>
            <li> 
                <a href="#" data-target="#quizzes"> Quizzes </a>
            </li>
            <li> 
                <a href="#" data-target="#categories"> Categories </a>
            </li>
            <li> 
                <a href="#" data-target="#jump"> Jump </a>
            </li>
        </ul>
</div>

<div id="quizzes" class="content"> 
     Quizzes! <!-- default showed -->
</div>

<div id="categories" style="display:none" class="content">
     Categories!
</div>

 <div id="jump" style="display:none" class="content">
     Jump!
</div>

Demo Using localStorage to remember last selected option

更新

至于.focus 类的操作,一些额外的JS 就足够了。无需在 localStorage 中保存任何其他信息。

$('#col-navigation a').click(function(e){
   e.preventDefault();
   $(this).addClass('focus').parent().siblings().find('a').removeClass('focus'); //<<<--THIS
   $(".content").hide().filter( $(this).data("target") ).show();
   localStorage.setItem('target', $(this).data("target"));
});
var target = localStorage.getItem('target');
!target || $('.content').hide().filter(target).show();
!target || $('a[data-target="' + target + '"]').addClass('focus').parent().siblings().find('a').removeClass('focus'); //<<<-- AND THIS

Updated Demo

关于javascript - 如何在页面刷新时保持选中/事件的 HTML 链接颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57608719/

相关文章:

javascript - 如何防止输入元素在父 div 中移动?

javascript - 更改组件 react js 的 onClick 函数?

javascript - 当 ajax async 设置为 false 时无法看到页面加载器图像

c# - 如何禁用使用 Iframe 打开其他 URL 的按钮?

带有粘性标题的 JavaScript 库移动

php链接到默认网络目录之外的图像文件

javascript - native DOM 元素的 Angular 2 onload 事件

javascript - 每个级别更改背景颜色(js 游戏)

javascript - 在一个div上打开不同的php文件

javascript - 在内部 div 中捕获滚动