Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Помогите доработать код .each(function()


nikoshot

Recommended Posts

Есть который перебирает все .items и если их больше 4 шт то добавялем класс "view_hide" - это нужно для того что скрыть опции если их больше четырех... ВСе отлично работает когда на странице один такой товар с такими классами .options_no_buy > .items
Если товаров больше тогда код отрабатывает для первого товара верно.. а для всех остальных всем классам "items" он добавляет класс "view_hide" , т.е он один раз для первого товара посчитал, а дальше всем добавляет класс "view_hide"

1 max_view = 4;
2         d = 0;
3         jQuery(".options_no_buy > .items").each(function() {
4             d += 1;
5             if(d > max_view) {
6                     jQuery(this).addClass("view_hide");
7             }
8         });


Помогите... плиз..
Нужно что бы код работало для каждого блока отдельно..
Например

01 <div class="options_no_buy ">
02     <div class="items">1</div>
03     <div class="items">2</div>
04     <div class="items">3</div>
05     <div class="items">4</div>
06     <div class="items view_hide">5</div>
07     <div class="items view_hide">6</div>
08 </div>
09  
10 <div class="options_no_buy ">
11     <div class="items">1</div>
12     <div class="items">2</div>
13     <div class="items">3</div>
14     <div class="items">4</div>
15     <div class="items view_hide">5</div>
16     <div class="items view_hide">6</div>
17     <div class="items view_hide">7</div>
18     <div class="items view_hide">8</div>
19     <div class="items view_hide">9</div>
20 </div>
Надіслати
Поділитися на інших сайтах


вам для каждой коллекции  ".options_no_buy
нужно собирать коллекцию

 

 

n_b =jQuery(".options_no_buy")
each (n_b, function(){$(this).find('.items')

 


 

Надіслати
Поділитися на інших сайтах

Можно без jquery 

let elements = Array.from(document.getElementsByClassName('options_no_buy'))
const counter = 4;
        
elements.map((el) => {
    let item = Array.from(el.children) 
    item.map((i, index) => {
        if(index >= counter) i.classList.add('view_hide')
    })
})

 

  • +1 1
Надіслати
Поділитися на інших сайтах

Как вариант без jquery

const PARENT_SELECTOR = '.options_no_buy';
const HIDE_CLASS_NAME = 'view_hide';
const HIDE_FROM_INDEX = 4;

const parentElements = document.querySelectorAll(PARENT_SELECTOR);
parentElements.forEach(parent => {
  const childs = Array.from(parent.children);
  const hidingElements = childs.slice(HIDE_FROM_INDEX);
  hidingElements.forEach(elem => elem.classList.add(HIDE_CLASS_NAME));
})

 

  • +1 1
Надіслати
Поділитися на інших сайтах


Для разнообразия вариантов, пример без js:

.options_no_buy > .item {
	display:none
}

.options_no_buy > .item:nth-child(-n+4) {
	display:block
}

 

или так :)

.options_no_buy > .item + .item + .item + .item {
	display:none
}

 

Надіслати
Поділитися на інших сайтах

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.