#jquery
Вопрос:
Я использую плагин facetwp для WordPress для фильтрации сообщений. Каждый фасет выводит свои параметры с разметкой, подобной этой…
<div class="facetwp-radio" data-value="blue"> ... </div>
При выборе опции добавляется class .checked .
Итак, на данной странице у меня может быть что-то вроде этого..
<div class="facetwp-radio .checked" data-value="blue"> ... </div>
<div class="facetwp-radio" data-value="red"> ... </div>
<div class="facetwp-radio .checked" data-value="green"> ... </div>
<div class="facetwp-radio" data-value="brown"> ... </div>
<div class="facetwp-radio .checked" data-value="yellow"> ... </div>
Мне нужно перебрать все эти элементы, проверить те, у которых есть класс .checked , взять их значение данных и найти другие элементы на странице, у которых классы равны значению данных, и добавить к ним класс .checked .
У меня есть рабочий код для одного экземпляра..
if ($('.facetwp-facet .checked[data-value="blue"]').length > 0) {
$('.blue').addClass('checked');
} else {
$( ".blue" ).removeClass( "checked" );
}
Как я могу изменить этот код, чтобы динамически «перебирать» все возможные комбинации?
Комментарии:
1. Попробуйте еще раз проверить, есть ли точка на
checked
классе в кодеfacetwp-radio .checked
. Это кажется невозможным, если в этом есть точка.
Ответ №1:
$('.facetwp-radio').each(...)
для перебора всех элементов. Не обычная практика иметь точку внутри имени класса css.
Демонстрация на https://codepen.io/ProGu/pen/jOLqrZP
$('.facetwp-radio').each(function() {
if ($(this).hasClass('.checked')) {
$('.' $(this).data('value')).addClass('.checked');
} else {
$('.' $(this).data('value')).removeClass('.checked');
}
});
Комментарии:
1. Сработало отлично. Большое вам спасибо.
Ответ №2:
Если я понимаю ваш вопрос, вы хотите перебрать набор всех проверенных радиостанций, а затем получить атрибут для каждого элемента в этом наборе. Затем вы пытаетесь найти все элементы, которые имеют эти значения в качестве класса.
$(".facetwp-radio .checked").each(function() {
var dv = $(this).attr("data-value");
var classSelector = "." dv;
var elementList = $(classSelector);
<Do whatever you want to do with that element set>
});
Комментарии:
1. Спасибо, Novabomb. Я собираюсь использовать подход @ProGu, поскольку он проще для моего уровня квалификации. Я ценю вашу помощь.