1

わかりました、これは 2 部構成の質問です。最初にこの関数を投稿しました:

$(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

助けてくれてありがとう!

4

1 に答える 1

0

クリック イベントをトリガーするか、ページの読み込み時にチェックされた項目ごとに includeBrand(filterString) 関数を呼び出す必要があります。

于 2015-03-20T20:13:53.773 に答える