@DivineDraft

Как получить значение ссылки по родителю и вывести по id?

Каким образом можно получить значение ссылки по родителю?
Имеется следующая структура:
<div id="iCode_7">
	<div class="iCode_block">...</div>
	<div class="iCode_block">...</div>
	<div class="iPhotoPrev">
		<a href="/_nw/0/29450659.png" target="_blank" class="ulightbox"><img src="/_nw/0/s29450659.jpg" style="max-width: 100%"></a>
		<input type="checkbox" id="del_img7" name="del_img7" value="1">
		<label for="del_img7" style="font-size:7pt;">Удалить</label>
	</div>
</div>

Структура генерируется автоматически. Задача - вставить значение "href" из класса .ulightbox в новый созданный input.

Input создаю перед iPhotoPrew, результат на данный момент такой:
<div id="iCode_7">
	<div class="iCode_block">...</div>
	<div class="iCode_block">...</div>
<input class="photo-link" onclick="select(this)">
	<div class="iPhotoPrev">
		<a href="/_nw/0/29450659.png" target="_blank" class="ulightbox"><img src="/_nw/0/s29450659.jpg" style="max-width: 100%"></a>
		<input type="checkbox" id="del_img7" name="del_img7" value="1">
		<label for="del_img7" style="font-size:7pt;">Удалить</label>
	</div>
</div>

Скрипт для вставки инпута, следующий:
$(".iPhotoPrev").before('<input class="photo-link" onclick="select(this)">');

Каким образом можно добавить значение VALUE для input (атрибут href из ulightbox), но с сохранением id нужного родителя? Так как, на странице ~ 10 подобных блоков. На данный момент, есть следующий код:
var getvalue = $('.ulightbox').attr('href');
 $(".photo-link").val(getvalue);

Но он дублирует одно и тоже значение во все input, что логично, ведь не используется значение родителя. Как можно модифицировать код? И так же, хотелось бы в input видеть значение как
<img src="значение атрибута href" alt="">
  • Вопрос задан
  • 67 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
$('.photo-link').val(function() {
  return $(this).parent().find('.ulightbox').attr('href');
});

или

document.querySelectorAll('.photo-link').forEach(n => {
  n.value = n.parentNode.querySelector('.ulightbox').getAttribute('href');
});
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@vardoLP
Ват ю сэй эбаут май мама?!
вам надо у каждого элемента получить значение

по клику
$('.ulightbox').click(function(){
var getvalue = $(this).attr('href');

// потом используйте метод closest для поиска ближайшего общего родителя элемента. Ищите в нем инпут и вставляйте полученное значение

$(this).closest('.parent').find('input.class').val(getvalue); 
})
Ответ написан
Ваш ответ на вопрос

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

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