Похоже, что проблема связана с тем, как реализован List. js: Поиск по списку . js source на GitHub , можно найти множество ссылок на элементы innerHTML
и outerHTML
свойства, но нет ссылок на textContent
или innerHTML
свойства.
При регистрации аргумента item
, переданного функции userList.filter
, item._values
отображается как
_values: Object { name: "", category: "Arts & Crafts" }
так ясно list.js
использует контент HTML для реализации фильтрации и получает (или вычисляет) Arts & Crafts
как контент HTML, который он ищет в элементах класса category
, используемых для фильтрации list.
Решение, предсказанное для решения проблемы, работает на практике: при обработке изменений ввода кнопки фильтра преобразуйте текст, содержащийся в атрибуте data-value
, в формат "text / hmtl", который используется list.js
(вместо того, чтобы оставить его как «текст / обычный текст»), прежде чем помещать его в массив activeFilters
:
// filter
$(".filter").change(function() {
var isChecked = this.checked;
var value = $(this).data("value");
value = value.replace("&", "&"); // filter value as "text/html"
if (isChecked) {
// add to list of active filters
activeFilters.push(value);
} else {
// remove from active filters
activeFilters.splice(activeFilters.indexOf(value), 1);
}
userList.filter(function(item) {
if (activeFilters.length > 0) {
return activeFilters.indexOf(item.values().category) > -1;
}
return true;
});
});