-1

名前と ID の 2 つの値を持つアイテムのリストがあります。各リスト項目は、Cookie から抽出されたデータを使用して作成されます。また、基本的に HTML を見て、その項目を Cookie から削除する削除ボタンもあります。きれいではありませんが、うまく機能します。

突然、3 番目の値 (img src) が導入されました。そのため、Cookie を作成してリストを作成する新しい関数を作成しました。人生はまだかなり素晴らしいです。

ただし、配列からアイテムを削除しようとすると、問題が発生します。

JS

$('.deleteNewCookie').on('click', function () {
  var val = $(this).prev().prev().html(); // Search DOM for value

  var cookieStr = cookieData.split('|');
  createCookie('cokLocation', "", -1);
  var newCookie = '';
  $.each(cookieStr, function (index, value) {
     if (value != '') {
        var cookieAdd = value.split(',');
        if (cookieAdd[1] != val) {
           newCookie = newCookie + value + '|';
        }
     }
  });
  createCookie('cokLocation', newCookie, '300');
});


これは、Cookie 内の 1 つのアイテムがどのように見えるかです。

ID,Name,/image.png|


マークアップがよりシンプルで ID と名前しかなかった場合、これは意図したとおりに機能しますが、ここでクリックする.deleteNewCookieと、画像ソースが Cookie に残ります。その配列 (項目) 内のすべてを削除するにはどうすればよいですか? 最初の 2 つの値だけを明らかに削除するのはなぜですか?

マークアップ

<li>
  <div class="myLocImg">
    <img src="/image.png">
  </div>
  <div class="myLocInfo">
    <h3>NAME</h3>
    <span url="locationid=ID" class="btn">More details</span>
    <a class="deleteNewCookie">Remove</a>
  </div>
</li>


私は自分の Cookie を再構築することに少し気が進まないのですが (他の場所で使用されているため)、最後の手段として説得されるかもしれません。また、プラグインも使用しておらず、インポートすることにあまり興味がありません。プレーンな JS または jQuery ソリューションのみでお願いします。:)

4

1 に答える 1

0

問題を再現しようとするフィドル。コードは期待どおりに機能します。コードの他の部分が問題を引き起こしています。

createCookie()問題は、「HTML 自体に値がどのように格納されたか」に関連していることが判明しました。

于 2012-06-18T14:04:28.367 に答える