Задать вопрос
@anton99zel
29а класс средней школы №7

Как кликнуть на следующий или предыдущий input?

Есть примерно такое:

<div class="gallery-colors">
<label class="photocheck green" for="65105"><input class="gl" id="65105" name="bmw" type="radio"></label>
<label class="photocheck red" for="65106"><input class="gl" id="65106" name="bmw" type="radio"></label>
<label class="photocheck green" for="65109"><input class="gl" id="65109" name="bmw" type="radio"></label>
<label class="photocheck" for="65107"><input class="gl" id="65107" name="bmw" type="radio"></label>
<label class="photocheck" for="65123"><input class="gl" id="65123" name="bmw" type="radio"></label>
<label class="photocheck" for="65144"><input class="gl" id="65144" name="bmw" type="radio"></label>
<label class="photocheck" for="65134"><input disabled class="gl" id="65134" name="bmw" type="radio"></label>
<label class="photocheck" for="65147"><input class="gl" id="65147" name="bmw" type="radio"></label>
</div>

Когда мне надо нажать на первый незаблокированный INPUT я в обработчике события использую это:

$('.gallery-colors').find('[type="radio"]:not(:disabled):first').click();

Я хочу расширить возможности галереи, у меня ещё есть два события, но не знаю как сделать следующее:

Кликнуть на предыдущий инпут (т.е. понять какой в данный момент выбран и кликнуть предыдущий),
то же самое для следующего. Это для свайпа.
Сам свайп:

if (direction == 'left') {
                //сработает при движении влево
            }
            if (direction == 'right') {
                //сработает при движении вправо
            }
  • Вопрос задан
  • 107 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
  • Яндекс Практикум
    Фронтенд-разработчик расширенный
    13 месяцев
    Далее
  • Академия Эдюсон
    Fullstack-разработчик на JavaScript + ИИ
    11 месяцев
    Далее
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
Предыдущий:

$('.gallery-colors :checked')
  .parent()
  .prevAll()
  .find(':radio:not(:disabled)')
  .last()
  .click();

Следующий:

const curr = document.querySelector('.gallery-colors :checked');
if (curr) {
  for (let n = curr.parentNode; n = n.nextElementSibling;) {
    const next = n.querySelector('input[type="radio"]:enabled');
    if (next) {
      next.click();
      break;
    }
  }
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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