Javascript 如果已单击链接,Jquery将从localstorage中删除项

Javascript 如果已单击链接,Jquery将从localstorage中删除项,javascript,jquery,local-storage,Javascript,Jquery,Local Storage,我有一个带有一些搜索结果过滤器的页面。这些过滤器是链接,单击后,我将id添加到localstorage。当页面重新加载时,如果链接的id存在,它会在localstorage中查找,并修改该特定链接的css。我能够做到这一点。 现在,当再次单击同一链接时,我需要能够从localstoarage中删除链接的id,以便在页面重新加载时不会更改css 单击之前 单击后 这是我的密码。StackOverflow的一些好心人帮我整理了这段代码。我需要它来扩展。请让我知道,如果有任何这是没有意义的。我很乐

我有一个带有一些搜索结果过滤器的页面。这些过滤器是链接,单击后,我将id添加到localstorage。当页面重新加载时,如果链接的id存在,它会在localstorage中查找,并修改该特定链接的css。我能够做到这一点。 现在,当再次单击同一链接时,我需要能够从localstoarage中删除链接的id,以便在页面重新加载时不会更改css

单击之前

单击后

这是我的密码。StackOverflow的一些好心人帮我整理了这段代码。我需要它来扩展。请让我知道,如果有任何这是没有意义的。我很乐意改写我的句子

$(document).ready(function() {
  //localStorage.clear();
  var cached = localStorage.getItem('filters');
  var filters = (cached) ? JSON.parse(cached) : {};
  for (id in filters) {
    $('#' + id).addClass('li-checked');
  }
  $('.li-filter').click(function(e) {
    //event.preventDefault();
    $(e.target).addClass('li-checked');
    $(e.target).removeClass('li-unchecked');
    var id = $(e.target).attr('id').toString();

    if (filters[id]) {
        filters[id] += 1;
      //filters = $.grep(filters, function(e) { return e.id!=id });

    } else {
        filters[id] = 1;

    }
    console.log(JSON.stringify(filters));
    localStorage.setItem('filters', JSON.stringify(filters));
  });
});

@Rohit如果我正确理解了你的问题,一旦单击,你必须添加一个类并删除它,以防它已经被单击。 对于这个场景,我建议编写一些功能来切换有帮助的类。 您需要在单击li时获取元素的类

if($(e.target).attr("class").contains("li-checked"))
{
    $(e.target).removeClass('li-checked');
    $(e.target).addClass('li-unchecked');
}
else if((e.target).attr("class").contains("li-unchecked"))
{
    $(e.target).removeClass('li-unchecked');
    $(e.target).addClass('li-checked');
}
如果该类为“li选中”,则将其删除并添加“li未选中” 如果该类为“li未选中”,则将其删除并添加“li已选中”


我希望它能有所帮助。

首先:使用toggleClass而不是addClass和removeClass。第二:filters[id]+=1是什么意思?嗨,赫曼特,谢谢你的及时回复。这不管用。它不像以前那样保留单击的值。@我的理解是,值存储在本地存储器中,但再次单击li项时出现问题,因此代码替换了单击函数的前两行。请回复,以防有什么我误解了,可以帮助进一步。我试图替换代码Hemant,但没有。相反,它完全停止了工作。它不再将值存储在localstorage中。@rohit也请帮助处理html,我将尝试在本地运行它。Thanks@RohitPrasad我认为代码不起作用,因为第一次单击li项时并没有类。因此,可以使用else块第一次添加li检查的类。而更好的选择是使用toggleClass,因为使用toggleClass将阻止使用if-else代码块。