我需要为每个元素在外部的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()在每个外部:
不确定再次循环插入数组是否有效,是否有办法一次性插入DOM元素数组?
答案 0 :(得分:2)
问题是因为$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()
将匹配任何子对象,不仅像原始实例一样匹配单个实例,而且在上下文中似乎没有重要区别的情况下也是如此。