Задать вопрос
@ascold2013

Как обратиться ко всем контейнерам в js?

Здравствуйте! Такая проблема - хочу вывести 6 элементов в каждом списке контейнера. Следующий jquery код выводит элементы только в первом блоке. А в следующих нет. Как правильно сделать выборку, чтобы слайс отработал во всех блоках calculator_price?

//Разметка
<div class="calculator_price">
                    <ul class="calculator_price_list">
                        <li class="calculator_price__item title">...</li>
                        ...
                   </ul>
</div>
...
<div class="calculator_price">
...
//Jquery
$(".calculator_price").find(".calculator_price__item").slice(0, 6).css({display: 'flex'});
  • Вопрос задан
  • 186 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 2
0xD34F
@0xD34F Куратор тега JavaScript
Где элементы находятся, что за элементы, скольким какой стиль надо назначить:

const containerSelector = '.calculator_price';
const itemSelector = '.calculator_price__item';
const count = 6;
const key = 'display';
const val = 'flex';

Назначаем:

$(containerSelector)
  .find(`${itemSelector}:lt(${count})`)
  .css({ [key]: val });

или

$(`${containerSelector} ${itemSelector}`)
  .filter((i, n) => $(n).index() < count)
  .css(key, val);

или

for (const n of document.querySelectorAll(containerSelector)) {
  for (const m of [...n.querySelectorAll(itemSelector)].slice(0, count)) {
    m.style.setProperty(key, val);
  }
}

или

document.querySelectorAll(containerSelector).forEach(n => {
  n.querySelectorAll(itemSelector).forEach((m, i) => {
    m.style[key] = i < count ? val : '';
  });
});
Ответ написан
Комментировать
@nugget-ekb
Верстальщик
Если я правильно понял, то функция each должна тут помочь.

$('.calculator_price').each(function(){
	$(this).find(".calculator_price__item").slice(0, 6).css({display: 'flex'});
});
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы