javascript - 如何在换页时保持活跃类(class)

标签 javascript jquery html css

我正在尝试将事件类添加到导航项,具体取决于您所在的页面。我正在使用这个脚本:

<script type="text/javascript">
    $(document).ready(function () {
        $("#side-bar a").click(function () {
            var id = $(this);

            $(id).siblings().find(".active").removeClass("active");
            $(id).addClass("active");
            localStorage.setItem("selectedolditem", id);
        });

        var selectedolditem = localStorage.getItem('selectedolditem');

        if (selectedolditem !== null) {
            $(selectedolditem).siblings().find(".active").removeClass("active");
            $(selectedolditem).addClass("active");
        }
    });
</script>

在这里查看完整的jsfiddle:https://jsfiddle.net/ebo7hLo9/ 它添加了事件类,但加载了一个新页面,它就消失了。我做错了什么?

最佳答案

https://jsfiddle.net/ebo7hLo9/10/ - 这是一个 fiddle !

$(document).ready(function () {

            $("#side-bar a").click(function () {
                var id = $(this);

                $(".active").removeClass("active");
                $(id).addClass("active");
                localStorage.setItem("selectedolditem", $(id).text());

            });

            var selectedolditem = localStorage.getItem('selectedolditem');

            if (selectedolditem !== null) {

                $("a:contains('" + selectedolditem + "')").addClass("active");
            }
        });

您的代码在记住要抓取的元素时遇到问题。我认为这是由于 Web 存储 API 对对象不熟悉造成的。相反,我从所选元素中获取文本,将其存储在 localStorage 中,并在页面加载时将其与正确的元素进行匹配。此外,您的代码的一部分负责在所选元素的 siblings() 中查找“active”类并将其删除。这么复杂的代码基本上是不必要的。我用类选择器 $(".active")

替换它

我没有在代码中更改这一点,但我建议不要使用 localStorage 而是使用 sessionStorage ,以便存储在选项卡/浏览器上自行清除关闭。

有关更多信息,请查看之前的 stackoverflow 帖子:Storing Objects in HTML5 localStorage

关于javascript - 如何在换页时保持活跃类(class),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29907609/

相关文章:

javascript - 创建具有不同颜色比例的双色 Canvas

javascript - 检索当前焦点/鼠标悬停的超链接 URL

jquery - 如何从 jQuery block 引用 DirectUpload js 类?

html - 粘性导航栏页脚 CSS 不起作用

HTML 标记包含显示表和显示内联 block

javascript - WebGL 在给定中心上旋转

javascript - 使用逻辑运算符如何填充 var?

Jquery Click() 错误 - 堆栈空间不足

php - 在 PHP 或 jQuery 中,如何使用正则表达式检查具有两个固定大写字母后跟数字值的值?

javascript - 使用带有 png 扩展名的 html2canvas 捕获网页的屏幕截图