我正在尝试创建一个数据 ID 列表并将它们存储在一个 cookie 中,这样我就可以稍后循环它们并根据需要对其进行操作。这需要在客户端完成,所以我想使用 jQuery Cookies。
假设我有一个投资组合项目列表,其中每个项目都有一个唯一的 data-id 属性。当用户单击单个投资组合项目时,我需要将该特定数据 ID 存储到 jQuery cookie 中,以便稍后引用它。
解决这个问题的最佳方法是什么?
您可以 JSON Stringify 数组,然后将其存储在 cookie 中。
已编辑
因此,您想检查用户已经访问过哪些投资组合页面(注意:除了 cookie,您还可以考虑 HTML5 History API 或 localStorage)。
当用户访问页面时,您希望从某处检索投资组合 ID。这可能在 DOM 元素中,也可能在 URL 的查询字符串中。我假设是后者。
// Get the portfolio ID from the query string
var currentId = new RegExp("[\\?&]MYID=([^&#]*)").exec(location.search)[1]
// Replace MYID in the line above with the name of your querystring parameter
好的,所以我们有我们的 ID。接下来,我们需要从 cookie 中读取任何现有的。如果 cookie 不存在,我们需要创建它。
function get_cookie ( cookie_name )
{
var results = document.cookie.match ( '(^|;) ?' + cookie_name + '=([^;]*)(;|$)' );
if ( results )
return ( unescape ( results[2] ) );
else
return null;
}
if (get_cookie('readPortfolios') == null) {
// Extremely simplified implementation
document.cookie = 'readPortfolios=' + currentId;
}
else {
// We have a cookie already. We'll read it
var ck = get_cookie('readPortfolios');
// We want to add this page's portfolio Id
ck += ',' + currentId;
// We then want to save the cookie back
document.cookie = 'readPortfolios=' + ck;
}
这就是我们每页的内容。接下来,我们要查看主页上的列表以查看已访问过的页面。
假设您有一个如下所示的列表:
<ul id="myPortfolioList">
<li id="data-id-1">Text One</li>
<li id="data-id-2">Text Two</li>
<li id="data-id-3">Text Three</li>
</ul>
首先我需要我的 cookie 值,然后我想将这些值与我的列表项的 Id 值进行比较。
var values = get_cookie('readPortfolios').split(',')
$('#myPortfolioList li').each(function(){
if ($.inArray(this.id, values) > -1) {
console.info('Portfolio Item ' + this.id + ' has been visited.');
}
});