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()
将匹配任何子项,不仅像您的原始实例那样匹配单个实例,而且考虑到似乎没有重要区别的上下文。
我需要将元素插入外部的 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()
将匹配任何子项,不仅像您的原始实例那样匹配单个实例,而且考虑到似乎没有重要区别的上下文。