Задать вопрос

Как в jQuery выбрать все элементы, которые идут друг за другом?

Нужно из кода:
<img src="" alt="" />
<img src="" alt="" />
<img src="" alt="" />
<h1>Title</h1>
<img src="" alt="" />
<img src="" alt="" />

Выбрать только те элементы, которые идут последовательно.
Должно получиться 2 выборки:
  • первая, состоящая из 3 img
  • вторая, состоящая из 2 последних img


Нужно для того, чтобы каждую группу в последствии поместить в контейнер - div
  • Вопрос задан
  • 441 просмотр
Подписаться 2 Оценить Комментировать
Решения вопроса 1
Deonisius
@Deonisius
Родился в 11110110111 году, 11000 января.
Еще такой вариант
var arr = [];
$('img:not(img + img)').each(function() {
    arr.push( $(this).nextUntil(':not(img)').andSelf() ) ;
});
console.log(arr);


P.S. Не обратил внимание на последнее предложение в вопросе. Массив не нужен, конечно же:
$('img:not(img + img)').each(function() {
    $(this).nextUntil(':not(img)').andSelf().wrapAll('<div />');
});
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
$('h1').prevAll('img').wrapAll('<div class="group"></div>');
$('h1').nextAll('img').wrapAll('<div class="group"></div>');

Или тоже самое
var $h1 = $('h1'), methods = ['prevAll', 'nextAll'];
methods.forEach(function(method) {
	$h1[method]('img').wrapAll('<div class="group"></div>');
});
Ответ написан
Комментировать
coderisimo
@coderisimo Куратор тега JavaScript
Просто идея - если выбрать ВСЕ элементы, а затем проитерировать коллекцию.
пока будут попадаться img - помещаете в одну под-коллекцию, а после h1 остальные img в другую.
Идея ясна?
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы