Javascript jquery-每两个循环插入一个元素

Javascript jquery-每两个循环插入一个元素,javascript,jquery,html,Javascript,Jquery,Html,我试图每隔两个循环将一组图像包装在一个div中。这样,每两个引导列都位于单独的行中。e、 g <div class="row"> <div class="col-6"><img src=".."></div> <div class="col-6"><img src=".."></div> </div> 正如您在下面的示例中所看到的,当使用文本时,它似乎起作用 var数据=[”https

我试图每隔两个循环将一组图像包装在一个div中。这样,每两个引导列都位于单独的行中。e、 g

<div class="row">
  <div class="col-6"><img src=".."></div>
  <div class="col-6"><img src=".."></div>
</div>

正如您在下面的示例中所看到的,当使用文本时,它似乎起作用

var数据=[”https://via.placeholder.com/100",
"https://via.placeholder.com/100",
"https://via.placeholder.com/100",
"https://via.placeholder.com/100"
];
变量输出=$('.container');
var i=0;
$.each(数据、函数(索引、值){
var模板=“”;
如果(i%2==0){

output.append(“行开始DOM不是一个HTML字符串,因此您不会将单独插入的标记拼凑在一起。如果要从HTML字符串构建DOM元素,则需要在添加元素之前构建整个元素。如果您尝试将其分块进行,则丢失的结束标记将自动更正,并且将生成一个单独的结束标记被忽略为无效输入

相反,预构建整个字符串,并在完成后追加它

var数据=[”https://via.placeholder.com/100",
"https://via.placeholder.com/100",
"https://via.placeholder.com/100",
"https://via.placeholder.com/100"
];
var html=data.reduce(函数(res,value,i){
返回res+
(i%2==0?“”:“”)+
('') +
(i%2!==0?'':);
}, "");
$('.container').append(html);


DOM不是一个HTML字符串,因此您不会将单独插入的标记拼凑在一起。如果要从HTML字符串生成DOM元素,则需要先生成整个元素,然后再追加。如果您尝试分段执行,则会自动更正缺少的结束标记,并忽略一个单独的结束标记作为无效输入

相反,预构建整个字符串,并在完成后追加它

var数据=[”https://via.placeholder.com/100",
"https://via.placeholder.com/100",
"https://via.placeholder.com/100",
"https://via.placeholder.com/100"
];
var html=data.reduce(函数(res,value,i){
返回res+
(i%2==0?“”:“”)+
('') +
(i%2!==0?'':);
}, "");
$('.container').append(html);

准备(生成)字符串内容,然后将
附加到输出中。类似于这样

var数据=[”https://via.placeholder.com/100",
"https://via.placeholder.com/100",
"https://via.placeholder.com/100",
"https://via.placeholder.com/100"
];
变量输出=$('.container');
var i=0;
var内容=“”;
$.each(数据、函数(索引、值){
var模板=“”;
如果(i%2==0){
内容+='';
}
内容+=模板;
i++;
如果(i%2==0){
内容+='';
}
})
输出。追加(内容);
.row{
最小高度:1px;
背景:蓝色;
}
.col-6{
背景:红色;
}

准备(生成)字符串内容,然后将
附加到输出中。类似于这样

var数据=[”https://via.placeholder.com/100",
"https://via.placeholder.com/100",
"https://via.placeholder.com/100",
"https://via.placeholder.com/100"
];
变量输出=$('.container');
var i=0;
var内容=“”;
$.each(数据、函数(索引、值){
var模板=“”;
如果(i%2==0){
内容+='';
}
内容+=模板;
i++;
如果(i%2==0){
内容+='';
}
})
输出。追加(内容);
.row{
最小高度:1px;
背景:蓝色;
}
.col-6{
背景:红色;
}

$。每个(数据、函数(索引、值){
var模板=“”;
如果(i%2==0){
output.append(“”)
}
$(“.row”).last().append(模板)
i++;
})
只需将模板附加到最后添加的行

$。每个(数据、函数(索引、值){
var模板=“”;
如果(i%2==0){
output.append(“”)
}
$(“.row”).last().append(模板)
i++;
})
只需将模板附加到最后添加的行


DOM不是一个HTML字符串,因此您不会将单独插入的标记拼凑在一起。如果要从HTML字符串生成DOM元素,则需要先生成整个元素,然后再追加它。如果您尝试将其拼凑在一起,则丢失的结束标记将被自动更正,一个单独的结束标记将被忽略无效输入。在将元素附加到DOM之前附加
template
。该模板是字符串,我无法附加到它,它不是jquery对象使其成为jquery-
$(模板)
。尝试过这个方法后,仍然无法正常工作。请随意给出一个示例答案。它无法工作的原因实际上是因为同一个问题。如果没有行自动关闭,我无法输出两个div,无论我是否首先添加到div字符串DOM不是HTML字符串,因此您不能将单独插入的标记拼凑在一起ed.如果要从HTML字符串构建DOM元素,则需要在追加元素之前构建整个元素。如果尝试分段执行此操作,将自动更正缺少的结束标记,并忽略一个单独的结束标记作为无效输入。在将元素附加到DOM之前,追加
模板
。模板是一个字符串,我不能附加到它,它不是jquery对象使它成为jquery-
$(模板)
。尝试过了,仍然无法正常工作。请随意给出一个示例答案。它无法工作的原因实际上是因为同一个问题。我无法在没有行自动关闭的情况下输出两个div,无论我是否首先添加到div字符串,我感谢您的努力,但您的答案似乎也不起作用。我给出了您的答案在一个片段中,请检查输出,你会看到抱歉,我搞糟了第二个条件。应该是
I!==0
。我感谢你的努力,但你的答案似乎也不起作用。我将你的答案制作成一个片段,请检查输出,你会看到抱歉,我搞糟了第二个条件。应该是
i!==0
。我喜欢简单的
$.each(data, function(index, value) {
  var template = '<div class="col-6"><img src=' + value + '/></div>';
  if (i % 2 == 0) {
    output.append('<div class="row"></div>')
  }
  $(".row").last().append(template)
  i++;
})