У меня есть сложный список div (с использованием поиска по классам) внутри другого сложного списка div, и мне нужен глобальный способ или захватить эти два списка как отдельные списки.
Код EG:
<div id="ServicesAccordian" class="scaling-Accordian">
<div class="row">
<div class="ACCPriority-3">
something
</div
<div class="ACCPriority-3">
something
</div
<div class="ACCPriority-3">
<div id="ServicesAccordian" class="scaling-Accordian">
<div class="row">
<div class="ACCPriority-3">
something at second depth
</div
<div class="ACCPriority-3">
something at second depth
</div
<div class="ACCPriority-3">
something at second depth
</div
</div>
</div>
</div
</div>
</div>
Сначала я ищу все '.scaling-Accordians' следующим образом:
this.AllAccordians = $('.scaling-Accordian');
Затем я хочу go через каждый аккордеон и захватить все строки, не захватывая внутренние строки как дети:
this.AllRows = $(this.ACCORDIAN).find('[class^="row"], [class*=" row"]');
Проблема в том, что запрос возвращает внутренние дочерние строки для второго Аккордеона. Я пытался использовать .Children (), но это не работает, потому что строки, аккордеоны и упорядочение находятся на разной глубине для разных аккордеонов. Плюс имена классов разные и случайные в зависимости от списка, над которым я работаю. Код должен работать для каждого аккордеона, который я делаю. Тем не менее, я знаю, что максимальная глубина строк должна составлять 4-6 ветвей и никогда не должна быть глубже. Мне нужен способ получить масштабирующий аккордеон и его строки, не захватывая строки из внутреннего масштабирующего аккордеона.
При текущем поиске мой аккордеон, например, только с 5 строками, выбирает внутренние строки как так: ![console log](https://i.stack.imgur.com/vHYOP.png)
И если я попытаюсь использовать метод .Children () для поиска в одной ветви, он не будет работать, потому что каждый аккордеон может иметь разную глубину, разные id и классы и др. c. И если я попытаюсь использовать метод .not () для игнорирования ветвей двойной глубины, он также не будет работать, потому что я все еще хочу более глубокий аккордеон, как и другой список. Вывод для:
$(this.ACCORDIAN).find('[class^="row"], [class*=" row"]').not('.scaling-Accordian [class^="row"], [class*=" row"] .scaling-Accordian [class^="row"], [class*=" row"]');
:
![console log](https://i.stack.imgur.com/u4jVt.png)
Мне нужен способ указать глубину, которую я хочу ограничить и захватить первый аккордеон с 5 рядами как 1 аккордеон, а затем аккордеоны внутри каждого из этих рядов как еще 5 отдельных аккордеонов. Есть ли какой-нибудь плагин для поиска определенных c глубин?
Извините, если это слишком сложно или слишком запутанно. Я постараюсь ответить на любые вопросы. Мне просто нужно что-то очень конкретное c для общего случая использования.
Спасибо
РЕДАКТИРОВАТЬ: Конкретный c пример моих аккордеонов:
<div id="ServicesAccordian" class="Scaling-Accordion">
<!--RENDER: Card Body Accordian - ALL SERVICES-->
<!--Item Card-->
<div id="CardToHide4">
<!--Item Card-->
<div class="card">
<!--Card Title-->
<div class="card-header" id="heading_1">
<div class="row collapsed" data-toggle="collapse" data-target="#collapse_1" aria-expanded="false" aria-controls="collapse_1">
<!--Card Title - Title Section-->
<div class="col-1 ACCPriority-3 text-center">
<span class="far fa-caret-square-down"></span>
</div>
<!--Card Title - Category Name-->
<div class="col-10 ACCPriority-1">
NAME
</div>
<!--Card Title - Total Price-->
<div class="col-1 ACCPriority-2 text-success text-right">
<span class="badge badge-pill badge-success">
$987.00
</span>
</div>
</div>
</div>
<!--Card/Item - Body-->
<div id="collapse_1" class="collapse" aria-labelledby="heading_1" data-parent="#ServicesAccordian">
<div class="card-body">
<!--Card Body Columns-->
<div class="col-md-12">
<!--Entire Form-->
<div class="form-row">
<div class="form-group col-md-12">
<!--Products Accordian-->
<div class="Scaling-Accordion">
<div class="row">
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>