Javascript 使用jQuery从本地存储中的阵列中删除项

Javascript 使用jQuery从本地存储中的阵列中删除项,javascript,jquery,css,html,local-storage,Javascript,Jquery,Css,Html,Local Storage,概述:基于前端的愿望列表 技术:HTML5(本地存储)、CSS和jQuery 功能:添加项目、重新加载前删除项目、实时计数 问题:如果我添加产品,请重新加载并尝试将其从阵列中删除,它将无法工作 我不确定如何解决问题的代码: $(“#愿望列表项”)。在(“单击”,“w-premove”,函数()上{ $product_id=$(this.attr(“wpid”); $(“#列表_id_u”+$product_id).remove(); 愿望列表=$.grep(愿望列表,函数(n,i){ 返回n!

概述:基于前端的愿望列表

技术:HTML5(本地存储)、CSS和jQuery

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

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

我不确定如何解决问题的代码:

$(“#愿望列表项”)。在(“单击”,“w-premove”,函数()上{
$product_id=$(this.attr(“wpid”);
$(“#列表_id_u”+$product_id).remove();
愿望列表=$.grep(愿望列表,函数(n,i){
返回n!=$product\U id;
});
setItem(wishlistkey,JSON.stringify(wish_list));
显示信息(“产品已删除”);
在\u愿望列表\u更新()中计算\u项目\u;
});
});问题在于:

wish_list = $.grep(wish_list, function (n, i) {
    return n != $product_id;
});
n
包含整个
tr
元素的HTML字符串,但
$product\u id
只是一个字符串id。因此所有内容都匹配,您可以将所有行放回本地存储

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

wish_list = [];

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

请在问题中加上a。当前代码同时太多和太少;我们希望看到代码所使用的HTML,但我怀疑我们是否需要所有这些JavaScript。请尝试将代码减少到重新创建错误所需的最小值。@MikeMcCaughan我已经减少了JS,并且仍然提供了指向fiddle的链接。希望这有帮助。点击“运行代码片段”按钮。你看到结果了吗?不那么它就不完整,也不可验证。这样想吧;您要求某人调试您的代码。你会给那个人所有需要的代码来帮助你解决你的问题吗?或者你会给那个人一点甚至不运行的代码吗?@MikeMcCaughan道歉,不知道为什么我的JSFIDLE链接没有出现。因为这里的代码编辑器在沙箱中运行,所以我用链接更新了票据