Использование jQuery для вставки <div> после соседних <div>

0

Скажем, у меня есть набор простых 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?

  • 0
    Итак, вы хотите «переместить» элементы .metadata из «до» в «после» .content родного элемента .metadata?
  • 0
    В общем, ознакомьтесь с разделом Traversing API jQuery.
Теги:
insertafter

2 ответа

4
Лучший ответ
$('.content').after(function() {
    return $(this).prev('.metadata');
});

FIDDLE

  • 0
    Просто. Элегантный. Прямо на месте. Спасибо!
  • 0
    @BinaryCat - Спасибо!
1
$('div.content').each(function(i) {
    $(this).prev('.metadata').insertAfter($(this));
})

http://jsfiddle.net/jwhitfieldseed/h7VZd/

  • 0
    Есть ли несоответствие? Хммм ...: |
  • 0
    Там было, я забыл обновить скрипку! отсортировано сейчас.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню