jQuery insertAfter不是一个函数

jQuery insertAfter不是一个函数,jquery,dom,element,insertafter,Jquery,Dom,Element,Insertafter,我需要为以下各项在外部将元素插入Dom元素: $items1 = []; $.each($('.qs-option-name'), function () { if($(this).find('span.highlighted').length === 1){ $item = $(this).parent().parent(); console.log($item); $items1.push($item); } }); console.lo

我需要为以下各项在外部将元素插入Dom元素:

$items1 = [];
$.each($('.qs-option-name'), function () {
   if($(this).find('span.highlighted').length === 1){
      $item  = $(this).parent().parent();
      console.log($item);
      $items1.push($item);
   }
 });
 console.log($items1);
 $items1.insertAfter('ul li.first');
console.log()中的每个:

console.log()外部用于以下各项:

$items1 = [];
$.each($('.qs-option-name'), function () {
   if($(this).find('span.highlighted').length === 1){
      $item  = $(this).parent().parent();
      console.log($item);
      $items1.push($item);
   }
 });
 console.log($items1);
 $items1.insertAfter('ul li.first');


不确定再次循环数组以插入是否有效有方法一次性插入DOM元素数组吗

问题是因为
$items1
是jQuery对象的数组,因此没有
insertAfter()方法

要解决此问题,可以从数组中创建jQuery对象:

$($items1).insertAfter('ul li.first');
或者,您可以使用
add()
组合jQuery对象,而不是创建基本数组:

var$items1=$();
$('.qs选项名')。每个(函数(){
if($(this.find('span.highlighted')。长度==1){
$item=$(this.parent().parent();
$items1.添加($item);
}
});
$items1.insertAfter('ulli.first');
但是,您可以使用
:has()
map()
使逻辑更加简洁:

var$items1=$('.qs选项名称:has(span.highlighted)').map(函数(){
返回$(this.parent().parent();
}).get();
$items1.insertAfter('ulli.first');

请注意,上述内容稍有不同,因为
:has()
将匹配任何子级,不仅是与原始实例相同的单个实例,而且给定的上下文似乎并不重要。

我还发现我可以使用
prepend
,但我会按照您的建议尝试创建对象形式数组!