Использование jQuery для вставки <div>после соседних <div>
Допустим, у меня есть набор простых элементов 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");
но при этом (как и ожидалось) добавляет ОБА div.metadata
элементы к каждому div.content
как показано в этой демонстрации.
Вы можете подумать, что назначение уникального идентификатора каждому элементу div сделало бы все просто, но 1) эти теги динамически генерируются CMS, и я бы хотел избежать ручного назначения идентификаторов, и 2) могут быть десятки одинаковых пар элементов,
Итак, вопрос в том, какой самый эффективный способ вставить после или добавить каждый div.metadata
к соседнему div.content
?
2 ответа
Решение
$('.content').after(function() {
return $(this).prev('.metadata');
});
$('div.content').each(function(i) {
$(this).prev('.metadata').insertAfter($(this));
})