1

我正在尝试创建一个数据 ID 列表并将它们存储在一个 cookie 中,这样我就可以稍后循环它们并根据需要对其进行操作。这需要在客户端完成,所以我想使用 jQuery Cookies。

假设我有一个投资组合项目列表,其中每个项目都有一个唯一的 data-id 属性。当用户单击单个投资组合项目时,我需要将该特定数据 ID 存储到 jQuery cookie 中,以便稍后引用它。

解决这个问题的最佳方法是什么?

4

2 回答 2

2

您可以 JSON Stringify 数组,然后将其存储在 cookie 中。

于 2012-05-31T00:07:38.553 回答
1

已编辑

因此,您想检查用户已经访问过哪些投资组合页面(注意:除了 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.');
  }
});
于 2012-05-31T00:19:29.730 回答