@Genri_Rus

Как обратиться к нескольким img через this?

Имеется такая структура кода:

<div>
  <p><input class="check" id="check-option-1" name="name" type="checkbox">
  <label for="check-option-1"></label>
  </p>
  <img src="http://lorempixel.com/30/30/city">
  <p class="copy">1</p>
  <p class="copy-2">1.1</p>
</div>
<div>
  <p><input class="check" id="check-option-2" name="name" type="checkbox">
  <label for="check-option-2"></label>
  </p>
  <img src="http://lorempixel.com/30/30/technics">
  <p class="copy">2</p>
  <p class="copy-2">2.1</p>
</div>


$('body').on('change', '.check', function(){
    
    if ($(this).prop('checked')) {
        let img = $('img').attr('src');
}
});

Мне нужно при нажатии на галочку записывать src картинки.

let img = $('img').attr('src') - вот так у меня выбирается только одна картинка.

А вот как сделать так, чтобы при выборе чекбокса выбиралась только та картинка, на которую я нажимал?
  • Вопрос задан
  • 94 просмотра
Решения вопроса 3
0xD34F
@0xD34F Куратор тега JavaScript
$(this).parent().next('img').attr('src')
Ответ написан
iiiBird
@iiiBird
Пока ты спишь - твой конкурент совершенствуется
let img = $(this).parent().siblings('img').attr('src');
Ответ написан
Добавьте картинке data-атрибут со значением ID инпута, который за ней закреплен:
<img src="http://lorempixel.com/30/30/city" data-input="check-option-1">

Далее получайте ID чекнутого инпута
$('body').on('change', '.check', function(){
    let id = $(this).attr('id');
    if ($(this).prop('checked')) {
        let img = $('img[data-id="'+id+'"]').attr('src');
}
});


В коде могут быть ошибки, работоспособность не проверял.

UPD: добавил песочницу https://jsfiddle.net/qf8zgshw/
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
Artezio Нижний Новгород
от 130 000 до 180 000 ₽
Artezio Москва
от 160 000 до 220 000 ₽
Intspirit Краснодар
от 80 000 до 150 000 ₽
20 янв. 2021, в 19:59
50000 руб./за проект
20 янв. 2021, в 19:52
1000 руб./в час
20 янв. 2021, в 19:49
55555 руб./за проект