2

我是 JavaScript 和 jQuery 的新手,所以如果我离基地很远,请告诉我。我正在使用这里的 cookie 插件:https ://github.com/carhartl/jquery-cookie 。

我有一个带有动态链接的页面。他们通过 URL 中的一些 GET 信息将用户发送到他们已经在其上的同一页面。我希望能够突出显示上一个单击的链接。

我的想法是将被点击的元素存储在 cookie 中,然后向该元素添加一个类。

设置 cookie

$("td.column1").on({
    click: function () {
      $.cookie('productCookie', this); //How do I store 'this' into the cookie?
    }
});

获取 cookie

var productValue = $.cookie('productCookie');
$(productValue).addClass("select singleselected");

没有 cookie 的代码

我从经验中知道,这行代码在我添加链接之前有效,这也是在重绘页面之前。

$(this).addClass("select singleselected");

我试过研究 this 关键字是如何工作的,但恐怕我不确定 addClass 方法正在获取什么选择器或如何获取当前元素。

使用的解决方案

function getParameters(geturl, columnNumber) {
    var url = geturl,
        urlRegExp = new RegExp(url.replace(/\/$/, ''));

    $(columnNumber).each(function () {
        if (urlRegExp.test(this.href)) {
            $(this).addClass("singleselected select");
        }
    });
}
4

3 回答 3

1

如果您的元素有 ID,您可以将元素的 ID 保存在 cookie 中,并在下一个页面加载时突出显示它。Cookie(和 localStorage,就此而言)只能存储字符串,或者可以序列化为字符串的东西。HTML 元素不可序列化。

于 2012-09-14T21:00:54.263 回答
1

检查这个线程:jQuery add class .active on menu

基本思路是解析当前的url,根据url找到激活的锚标签。

于 2012-09-14T21:01:41.520 回答
0

Cookie 包含字符串。您将需要存储一些基于字符串的指示符,以指示单击了哪个链接。

它可以是表中的 id 或行号或类似的东西。然后,当您在页面加载时读取 cookie 时,您可以找到与该指示符匹配的 DOM 元素并相应地更改它。

您不能将 DOM 元素引用存储在 cookie 中,因为 DOM 元素引用不是字符串,并且它们不会从一个页面加载到下一个页面持续存在。特定的 DOM 元素引用仅存在于给定页面期间。

如果您显示包含您要保存的内容的实际 HTML,我们可以更具体地参考什么是有意义的保存在 cookie 中。如果是表格,可能是行/列计数(转换为字符串形式)。如果每个链接都有唯一的 id,那么最简单的方法就是存储 id。

于 2012-09-14T21:01:44.533 回答