Проблема заключается в том, что $items1
является массивом объектов jQuery и поэтому не имеет метода insertAfter()
.
Чтобы решить эту проблему, вы можете создать объект jQuery из массива:
$($items1).insertAfter('ul li.first');
В качестве альтернативы вы можете использовать add()
для объединения объектов jQuery вместо создания базового массива:
var $items1 = $();
$('.qs-option-name').each(function() {
if ($(this).find('span.highlighted').length === 1) {
$item = $(this).parent().parent();
$items1.add($item);
}
});
$items1.insertAfter('ul li.first');
Однако вы можете сделать логику более лаконичной, используя :has()
и map()
:
var $items1 = $('.qs-option-name:has(span.highlighted)').map(function() {
return $(this).parent().parent();
}).get();
$items1.insertAfter('ul li.first');
Обратите внимание, что приведенное выше немного отличается тем, что :has()
будет соответствовать любому дочернему элементу, а не толькоодин экземпляр, как это сделал ваш оригинал, но с учетом контекста, который не кажется важным различием.