mk3mk
@mk3mk
занимаюсь вёрсткой (иногда)

Как получить индекс элемента с двумя классами?

Добрый день. Есть несколько элементов одного класса, Класс1 . Одному из этих элементов назначается еще один класс, Класс2. Потом у этого элемента этот второй класс удаляется и присваивается другому элементу и т.д. из этих же. И так всё время Класс2 присваивается то одному, то другому элементу с классом1.
Теперь я ищу элемент с классом Класс2, и мне надо узнать его индекс в массиве элементов с Классом1.
Если я пишу вот так
$('.class2').index();

то получаю всё время 0, т.к. он один, а мне надо получить его положение в классе1.
Как это можно сделать ?

может как-то так :
$('.class1').parent().find($('.class1, .class2').index();

или так :
$('.class1').parent().find($('.class1').hasClass('.class2').index();

вот пример

https://codepen.io/mk3mk/pen/XOVeqg
  • Вопрос задан
  • 282 просмотра
Решения вопроса 2
0xD34F
@0xD34F Куратор тега JavaScript
const elems = [...document.querySelectorAll('.class1')];
const index = elems.findIndex(n => n.classList.contains('class2'));

или

const elems = document.querySelectorAll('.class1');
let index = elems.length;
while (--index >= 0 && !elems[index].matches('.class2')) ;

или

const index = Array.prototype.indexOf.call(
  document.querySelectorAll('.class1'),
  document.querySelector('.class2')
);
Ответ написан
@KnightForce
let list = $('.class1');
for(let i = 0; i < list.length; i++) {
 if(list.eq(i).hasClass('class2')) {
    console.log(i);
    break;
 }
}


let list = $('.class1');
for(let i = 0; i < list.length; i++) {
 if(list[i].className.includes('class2')) {
    console.log(i);
    break;
 }
}


$('.class1').each((index, item) => {
 if(item.className.includes('class2')) console.log(index)
} );
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы