[英]Jquery to retain the links clicked and add/remove css class after refresh
我有一个包含多个“过滤器”的页面,它们基本上是链接。 单击链接后,我可以过滤结果。 但是,当单击链接时,我想在刷新页面时添加/删除类。 我尝试使用 localstorage 但我的 localStorage 返回 null。 任何帮助,将不胜感激。 我对 Jquery 很陌生。 这可能是重复,但我的情况似乎是独一无二的,因为刷新时的 localstorage 在控制台上返回 null。
if (localStorage.getItem('filters')==null){
var filters={};
alert("in here");
}
else{
filters= JSON.parse(localStorage.getItem('filters'));
}
$(".li-filter").click(function(){
/*event.preventDefault();*/
var idstr= this.id.toString();
/*console.log(idstr);*/
if (filters[idstr] != undefined){
filters[idstr] = filters[idstr] +1;
}
else {
filters[idstr] = 1;
}
localStorage.setItem('filters',JSON.stringify(filters));
console.log(filters);
});
我不确定是否需要使用 AJAX 来保留我选择的链接 ID。
根据您的描述,我有一个工作小提琴: https : //jsfiddle.net/7mtxw2a3/4/ 。 我建议使用浏览器的开发人员工具在设置值后验证本地存储的内容,然后在页面刷新时再次验证。
$(document).ready(function() {
var cached = localStorage.getItem('filters');
var filters = cached ? JSON.parse(cached) : {};
for (id in filters) {
$('#' + id).addClass('cached');
}
$('li').click(function() {
$(this).addClass('cached');
var id = this.id.toString();
if (filters[id]) {
filters[id] += 1;
} else {
filters[id] = 1;
}
localStorage.setItem('filters', JSON.stringify(filters));
});
});
我修改了另一个答案,直到它看起来有效。
$(document).ready(function() {
var cached = localStorage.getItem('filters');
var filters = (cached) ? JSON.parse(cached) : {};
for (id in filters) {
$('#' + id).addClass('cached');
}
$('li').click(function(e) {
$(e.target).addClass('cached');
var id = $(e.target).attr('id').toString();
if (filters[id]) {
filters[id] += 1;
} else {
filters[id] = 1;
}
localStorage.setItem('filters', JSON.stringify(filters));
});
});
获取点击对象的位置是e.target
。 这是Jquery 事件对象剖析的链接。
但是,当一起使用 JQuery 和事件时,在很多情况下,您需要将元素反馈到选择器中,就像我对$(e.target)
所做的那样。
要请求id
属性,您需要链接.attr()
方法。
给@Freddy 的小费,让他们开始小提琴。 这是我的小提琴版本。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.