【发布时间】:2012-09-08 01:15:19
【问题描述】:
我是 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");
}
});
}
【问题讨论】:
-
Cookies 只能存储字符串或数字,不能存储 DOM 元素。您需要存储单击链接的一些唯一属性——HREF 或 ID 或索引号——而不是
this。如果没有看到您的 HTML,我无法提供更多详细信息。 -
我通常发现通过查看当前 url 添加类服务器端更容易。您仍然可以在 javascript 中查看当前 url 并执行相同操作。
-
你使用什么服务器端语言?
-
仅供参考,我建议不要使用 cookie。有些人禁用它们。如果有人从谷歌获得链接怎么办?这样您就不会在 cookie 中存储一些东西来突出显示所选页面。
-
我正在使用 MVC3。我知道有些人不使用 cookie。这些人已经这样做了。此外,我已经在 JavaScript 代码中做出了许多决定,这些决定与此代码所依赖的决定相同。保持这个客户端保持干燥。
标签: javascript jquery jquery-selectors this