BarnyBroken
@BarnyBroken
Дизайнер, веб-разработчик.

Как сделать append элемента между блоками в jQuery?

Мне нужно при загрузке страницы добавлять два блока с рекламой между 3й и 6й новостью.
Разметка новостей такая:

<div class="newsBlocks">
    <div class="newsItem"></div>    
    <div class="newsItem"></div>
    <div class="newsItem"></div>
    <div class="newsItem"></div>
    <div class="newsItem"></div>
    <div class="newsItem"></div>
    <div class="newsItem"></div>
    <div class="newsItem"></div>
    <div class="newsItem"></div>
    <div class="newsItem"></div>
</div>

Насколько я понял, изначально нужно циклом посчитать сколько всего есть новостей и уже потом вставлять блок с рекламой после определенного числа, но как это сделать увы не знаю.
  • Вопрос задан
  • 1071 просмотр
Решения вопроса 2
thewind
@thewind
php программист, front / backend developer
Jquery after или before
Нужный элемент $(".newsItem").eq(N)
Ответ написан
Комментировать
@Vovchikvoin
Если вкратце вот пример jsfiddle.net/4j44vg01
Берем все блоки, находим нужный например с помощью метода eq() который принимает номер элемента (отсчет идет от нуля, поэтому если хотим 3 элемент, ставим 2), метод возвращает нужный элемент, и как сказал Дмитрий, применяете методы after или before - они вставляют HTML сразу после и перед текущим элементом
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
nepritimov_m
@nepritimov_m
Frontend dev.
В блоки, после/перед/в которые хотите добавить рекламу, можно прописать определенный класс и уже от этого двигаться дальше. Ну или сделать так:
var wrapBlocks = $('.newsBlocks'),
    elemBlock = wrapBlocks.find('.newsItem'),
    count = 0,
    advBlock = '<div class="you-adv">Моя реклама </div>';

elemBlock.each(function () {
    if (count === 3 || count === 6) {
        $(this).after(advBlock);
    }
    ++count;
});
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы