#javascript #jquery #append
#javascript #jquery #добавить
Вопрос:
У меня неизвестное количество разделов с увеличивающимися идентификаторами:
<div id="source-1" data-grab="someURL"/>Content</div>
<div id="source-2" data-grab="anotherURL"/>Content</div>
<div id="source-3" data-grab="anddifferentURL"/>Content</div>
<div id="source-4" data-grab="andthelastoneURL"/>Content</div>
И у меня есть другой список:
<ul>
<li id="target-1" class="target"><a href="#"> </a></li>
<li id="target-2" class="target"><a href="#"> </a></li>
<li id="target-3" class="target"><a href="#"> </a></li>
<li id="target-4" class="target"><a href="#"> </a></li>
</ul>
Теперь, чего я хочу достичь, это захватить URL-адрес data-grab из source-1 и добавить его к target-1 в виде изображения и так далее. Итак, в конечном итоге выходной список будет выглядеть так:
<ul>
<li id="target-1"><a href="#"><img src="someURL" /> </a></li>
<li id="target-2"><a href="#"><img src="anotherURL" /> </a></li>
<li id="target-3"><a href="#"><img src="anddifferentURL" /> </a></li>
<li id="target-4"><a href="#"><img src="andthelastoneURL" /> </a></li>
</ul>
Я беру все данные из первого списка, но я не уверен, как добавить правильный исходный элемент к правильному целевому элементу?
$(document).ready(function(){
$('.target').each(function(){
var URL = jQuery(this).data('grab');
});
});
Ответ №1:
$(document).ready(function(){
$('.target').each(function(){
var $this = $(this);
var divID = "source-" ($this.id()).split("-")[1];
$("a", $this).append('<img src="' $(divID).data("grab") '" />');
});
});
Комментарии:
1. почему там var $ this, а не «var this»? 🙂 Я работаю над своим скриптом и собираюсь сказать, сработает ли он, но я уверен, что так и будет!
2. @Wordpressor использование var $this = $(this) сокращает вызов селектора jquery и делает код немного более эффективным, чем постоянное использование $ (this) везде.
3. Разве divID не соответствует «source1», а не «source-1»?
Ответ №2:
Вы можете использовать индексы для выбора правильных элементов, если добавите класс к своим исходным элементам (например .source
):
$(document).ready(function(){
var targets = $( '.target' );
$('.source').each(function(index, value){
$(target[index]).children("a").first().append($("<img src=" value.data('grab') " />"));
});
});