使用jQuery从本地存储中的数组中删除Item

时间:2017-05-22 14:59:29

标签: javascript jquery css html5 local-storage

概述:基于前端的愿望清单

技术: HTML5(localStorage),CSS和jQuery

功能:添加项目,重新加载前删除项目,实时计数

问题:如果我添加产品,重新加载并尝试将其从阵列中删除它将无法正常工作。

代码,我不知道如何解决问题:

$("#wish_list_item").on("click", ".w-premove", function() {
$product_id = $(this).attr("wpid");
$("#list_id_" + $product_id).remove();
wish_list = $.grep(wish_list, function(n, i) {
  return n != $product_id;
});
localStorage.setItem(wishlistkey, JSON.stringify(wish_list));
show_message("Product removed");
count_items_in_wishlist_update();
});
});

链接到我的小提琴: https://jsfiddle.net/3ybwf3c3/4/

解决方案: https://jsfiddle.net/3ybwf3c3/6/

代码:

$("tr.wishlist-item").each(function(index, el) { wish_list.push(el.outerHTML); });

1 个答案:

答案 0 :(得分:1)

问题在于:

wish_list = $.grep(wish_list, function (n, i) {
    return n != $product_id;
});

n包含整个tr元素的HTML字符串,但$product_id只是一个字符串ID。所以一切都匹配,然后将所有行放回本地存储。

由于您从DOM中删除了产品,因此您只需重新查询DOM以获取新的HTML字符串:

wish_list = [];

$("tr.wishlist-item").each(function(index, el) { 
    wish_list.push(el.outerHTML);
});