РЕДАКТИРОВАНИЕ
Давайте взглянем на ваш код
$('#filter-channel li').each(function() {
if (filterOptions["claimTypeID"].includes($(this).find('a').attr('data-value'))) {
$(this).find('a').addClass("active");
}
});
$('#filter-provider li').each(function() {
if (filterOptions["providerGUID"].includes($(this).find('a').attr('data-value'))) {
$(this).find('a').addClass("active");
}
});
Часть первая
$('#filter-channel li').each(function() {
if (filterOptions["claimTypeID"].includes($(this).find('a').attr('data-value'))) {
$(this).find('a').addClass("active");
}
});
Что он делает?
Этот цикл повторяет каждый элемент li
, который находится внутри элемента с id="filter-channel"
, и добавляет класс active
ко всем элементам привязки, атрибут которых data-value
находится внутриfilterOptions["claimTypeID"]
переменная.
Часть вторая
$('#filter-provider li').each(function() {
if (filterOptions["providerGUID"].includes($(this).find('a').attr('data-value'))) {
$(this).find('a').ddClass("active");
}
});
Что это делает?
Этот цикл очень похожк предыдущему, но это не то же самое.
В чем различия?
- Второй цикл повторяет элементы
li
, которые находятся внутри элемента сid="filter-private"
и сначала перебирает элементы li
внутри id="filter-channel"
- Второй цикл проверяет, находится ли атрибут
data-value
внутри filterOptions["providerGUID"]
, и сначала проверяет, находится ли внутри filterOptions["claimTypeID"]
.
Итак, вернемся к вашему вопросу addClass не работает на втором ul
Работает ли первый? Да
Есть несколько возможностей, почему второй цикл не добавляет active
класс к элементам.
- Поскольку значение их атрибута
data-value
не равновнутри filterOptions["providerGUID"]
, - Он добавляет класс
active
, но вы его просто не видите (например, в CSS вы не добавили этот элемент с классом active
внутри #filter-provider
видимый), - В элементе
li
внутри элемента #filter-provider
нет тегов привязки.
Дополнительно
Избегайте использования $(this)
больше, чемодин раз.Если вам нужно, просто сохраните его как переменную.Он потребляет меньше памяти.
Пример
$('#filter-provider li').each(function() {
var liElement = $(this);
if (filterOptions["providerGUID"].includes(liElement.find('a').attr('data-value'))) {
liElement.find('a').addClass("active");
}
});