在本地存储中保持选中复选框,但也会在加载时过滤列表
Keeping a checkbox checked with local storage but also filter a list on load
好吧,这个 is/was 问题分为两部分,我最初发布了这个函数:
$(function () {
var data = localStorage.getItem("filter-by");
if (data !== null) {
$("input[name='filters']").attr("checked", "checked");
}
});
$("input[name='filters']").click(function () {
if ($(this).is(":checked")) {
localStorage.setItem("filter-by", $(this).val());
} else {
localStorage.removeItem("filters");
}
});
作为我在使用本地存储加载后重新选中复选框的开始。经过反复试验,有人帮我写了这个新函数:
$("input[name='filters']").click(function () {
var items = localStorage.getItem("filter-by") || [];
var data = this.data('filter-by');
if ($(this).is(":checked")) {
items.push(data);
} else if (items.indexOf(data) >= 0) {
items.splice(items.indexOf(data), 1);
}
if (items.length > 0) {
localStorage.setItem("filter-by", items);
} else {
localStorage.removeItem("filter-by");
}
});
$(function () {
var items = localStorage.getItem("filter-by") || [];
$("input[name='filters']").each(function(index, input) {
var data = $(input).data('filter-by');
if (items.indexOf(data) >= 0) {
$(input).attr('checked', 'checked');
}
});
});
使用此功能,我可以存储选中了哪些复选框,但列表不会过滤。我怎样才能使用我的任一函数在刷新时也制作列表过滤器?
我正在使用如下所示的输入:
<input type="checkbox" name="filters" data-filter-by="Brand A" ng-click="includeBrand('Brand A')" />Brand A
感谢大家的帮助!
要么您必须触发点击事件,要么您需要在页面加载时为每个选中的项目调用 includeBrand(filterString) 函数。
好吧,这个 is/was 问题分为两部分,我最初发布了这个函数:
$(function () {
var data = localStorage.getItem("filter-by");
if (data !== null) {
$("input[name='filters']").attr("checked", "checked");
}
});
$("input[name='filters']").click(function () {
if ($(this).is(":checked")) {
localStorage.setItem("filter-by", $(this).val());
} else {
localStorage.removeItem("filters");
}
});
作为我在使用本地存储加载后重新选中复选框的开始。经过反复试验,有人帮我写了这个新函数:
$("input[name='filters']").click(function () {
var items = localStorage.getItem("filter-by") || [];
var data = this.data('filter-by');
if ($(this).is(":checked")) {
items.push(data);
} else if (items.indexOf(data) >= 0) {
items.splice(items.indexOf(data), 1);
}
if (items.length > 0) {
localStorage.setItem("filter-by", items);
} else {
localStorage.removeItem("filter-by");
}
});
$(function () {
var items = localStorage.getItem("filter-by") || [];
$("input[name='filters']").each(function(index, input) {
var data = $(input).data('filter-by');
if (items.indexOf(data) >= 0) {
$(input).attr('checked', 'checked');
}
});
});
使用此功能,我可以存储选中了哪些复选框,但列表不会过滤。我怎样才能使用我的任一函数在刷新时也制作列表过滤器?
我正在使用如下所示的输入:
<input type="checkbox" name="filters" data-filter-by="Brand A" ng-click="includeBrand('Brand A')" />Brand A
感谢大家的帮助!
要么您必须触发点击事件,要么您需要在页面加载时为每个选中的项目调用 includeBrand(filterString) 函数。