我正在尝试创建一个data-id列表并将它们存储在cookie中,因此我可以稍后循环它们并根据需要对它们进行操作。这需要在客户端完成,所以我想使用jQuery Cookies。
假设我有一个投资组合项列表,其中包含与每个项关联的唯一data-id属性。当用户点击单个项目组合项时,我需要将该特定数据ID存储到jQuery cookie中,以便稍后引用。
解决这个问题的最佳方式是什么?
答案 0 :(得分:1)
您可以JSON对数组进行字符串化,然后将其存储在cookie中。
答案 1 :(得分:1)
<强>被修改强>
因此,您要检查用户已访问过的投资组合页面(注意:您可能还会考虑HTML5历史记录API或localStorage而不是Cookie。)
当用户访问某个页面时,您希望从某个位置检索该组合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
好的,我们有我们的身份证明。接下来,我们需要从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.');
}
});