@aaltw

Как использовать одинаковый id на разных вкладках (nav tabs)?

<ul class="nav nav-tabs" id="myTab" role="tablist">
  <li class="nav-item" role="presentation">
    <button class="nav-link active" id="home-tab" data-bs-toggle="tab" data-bs-target="#home" type="button" role="tab" aria-controls="home" aria-selected="true">Home</button>
  </li>
  <li class="nav-item" role="presentation">
    <button class="nav-link" id="profile-tab" data-bs-toggle="tab" data-bs-target="#profile" type="button" role="tab" aria-controls="profile" aria-selected="false">Profile</button>
  </li>
  <li class="nav-item" role="presentation">
    <button class="nav-link" id="contact-tab" data-bs-toggle="tab" data-bs-target="#contact" type="button" role="tab" aria-controls="contact" aria-selected="false">Contact</button>
  </li>
</ul>
<div class="tab-content" id="myTabContent">
  <div class="tab-pane fade show active" id="home" role="tabpanel" aria-labelledby="home-tab">
    <div id='my-id'></div>
  </div>
  <div class="tab-pane fade" id="profile" role="tabpanel" aria-labelledby="profile-tab">
    <div id='my-id'></div>
  </div>
  <div class="tab-pane fade" id="contact" role="tabpanel" aria-labelledby="contact-tab">
    <div id='my-id'></div>
  </div>
</div>


Это стандартный код отсюда - https://getbootstrap.com/docs/5.0/components/navs-tabs/ . Я лишь добавил в тело каждой вкладки следующий код:
<div id='my-id'></div>

При такой реализации выходит, что на странице будет 3 элемента с одинаковым id. Хотя визуально я никогда не буду находиться более, чем на одной из этих вкладок. Из-за этого мне приходится для каждой вкладки выдумывать свой префикс для id, чтобы они отличались.

Есть ли для этого более адекватное решение? В реальном коде все элементы с одинаковым id приходят, конечно, после рендера и т.д., поэтому я передаю нужный префикс в него, но из-за этого код этих добавляемых элементов становится слабо читабельным из-за конструкций типа "##{prefix}-my-id" и прочего.
  • Вопрос задан
  • 142 просмотра
Пригласить эксперта
Ваш ответ на вопрос

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

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