Фильтр тегов флажка Javascript: ошибка, из-за которой результаты не отображаются - PullRequest
0 голосов
/ 17 апреля 2019

У меня есть этот фильтр содержимого с флажком, который работает, получая .text внутри опции.

Проблема в том, что он не сбрасывается после снятия отметки и показывает все содержимое, которое предполагается отфильтровать.

$("#filters :checkbox").click(function() {

   var re = new RegExp($("#filters :checkbox:checked").map(function() {
                          return this.value;
                       }).get().join("|") );
   $("div").each(function() {
      var $this = $(this);
      $this[re.source!="" && re.test($this.text().toLowerCase()) ? "show" : "hide"]();
   });
});

Это должно очистить результаты.

Весь код здесь в JsFiddle https://jsfiddle.net/4fhkzxdp/2/

1 Ответ

1 голос
/ 17 апреля 2019

Когда $("#filters :checkbox:checked") пусто (когда все флажки сняты), строка, используемая для создания нового RegExp, пуста. Если вы используете это выражение, оно будет соответствовать всем вашим элементам и отображать их.

var myRegexp = new RegExp('') // /(?:)/

Быстрый взлом состоял бы в том, чтобы сохранить отмеченные поля в переменной и в проверке цикла каждый , чтобы увидеть, является ли этот массив пустым - если это так, ни один из элементов не будет видимым. Вот как вы можете это сделать: https://jsfiddle.net/3t2hydmn/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...