我如何存储“这个”元素以备后用
Posted
技术标签:
【中文标题】我如何存储“这个”元素以备后用【英文标题】:How do I store 'this' element for later 【发布时间】: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 代码中做出了许多决定,这些决定与此代码所依赖的决定相同。保持这个客户端保持干燥。
【参考方案1】:
查看此线程:jQuery add class .active on menu
基本思路是你解析当前的url,根据url找到激活的锚标签。
【讨论】:
这不使用cookies。这是一种我认为更适合您的替代方法。 我喜欢这个的样子,我会在星期二回去工作的时候试试这个。【参考方案2】:如果您的元素有 ID,您可以将元素的 ID 保存在 cookie 中,并在下一个页面加载时突出显示它。 Cookie(和 localStorage,就此而言)只能存储字符串,或者可以序列化为字符串的东西。 HTML 元素不可序列化。
【讨论】:
【参考方案3】:Cookie 保存字符串。您将需要存储一些基于字符串的指示符,以指示单击了哪个链接。
它可以是表中的 id 或行号或类似的东西。然后,当您在页面加载时读取 cookie 时,您可以找到与该指示符匹配的 DOM 元素并相应地更改它。
您不能将 DOM 元素引用存储在 cookie 中,因为 DOM 元素引用不是字符串,并且它们不会从一个页面加载到下一个页面持续存在。特定的 DOM 元素引用仅存在于给定页面中。
如果您显示包含您要保存的内容的实际 HTML,我们可以更具体地参考保存在 cookie 中的意义。如果是表格,可能是行/列计数(转换为字符串形式)。如果每个链接都有唯一的 id,那么最简单的方法就是存储 id。
【讨论】:
以上是关于我如何存储“这个”元素以备后用的主要内容,如果未能解决你的问题,请参考以下文章