Скажем, у меня есть набор простых HTML-элементов следующим образом:
<div class="metadata">I'm metadata #1</div>
<div class="content">Hello, world!</div>
<p />
<div class="metadata">I'm metadata #2</div>
<div class="content">Hello, world!</div>
Моя цель - вставить каждую div.metadata
сразу после смежного div.content
. Очевидно, я могу попробовать: $("div.metadata").insertAfter("div.content");
но при этом (как и ожидалось) добавляет BOTH элементов div.metadata
к каждому div.content
как показано в этой демонстрации.
Вы могли бы подумать, что назначение уникального идентификатора для каждого div сделает вещи простыми, но 1) эти теги динамически генерируются CMS, и я бы хотел избежать присвоения идентификаторов вручную, и 2) могут существовать десятки одинаковых пар элементов,
Итак, вопрос в том, какой самый эффективный способ вставить после или добавить каждый div.metadata
в соседний div.content
?
$('.content').after(function() {
return $(this).prev('.metadata');
});
$('div.content').each(function(i) {
$(this).prev('.metadata').insertAfter($(this));
})