jQuery insertAfter 不是函数

jQuery insertAfter is not a function

我需要将元素插入外部的 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() 外面为每个:

不确定再次循环数组以插入是否有效有没有办法一次性插入一个 DOM 元素的数组?

问题是因为 $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() 将匹配任何子项,不仅像您的原始实例那样匹配单个实例,而且考虑到似乎没有重要区别的上下文。