1

データIDのリストを作成してCookieに保存しようとしているので、後でそれらをループして、必要に応じて操作できます。これはクライアント側で行う必要があるため、jQuery Cookie を使用したいと考えています。

各アイテムに関連付けられた一意の data-id 属性を持つポートフォリオ アイテムのリストがあるとします。ユーザーが 1 つのポートフォリオ アイテムをクリックすると、その特定のデータ ID を jQuery Cookie に保存して、後で参照できるようにする必要があります。

これについて最善の方法は何ですか?

4

2 に答える 2

2

配列を JSON 文字列化してから、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 に答える