宣布API文件:
如果以这种方式选择的元素插入到单个位置 在DOM的其他地方,它将被移动到目标(未克隆)。 重要提示:但是,如果有多个目标元素,则克隆 将为每个目标创建插入元素的副本,除外 为了最后一个。
var div = $("<div></div>").addClass("divCells"),
tdName = $("<td></td>").addClass("tdName"),
tdAge = $("<td></td>").addClass("tdAge"),
tdGender = $("<td></td>").addClass("tdGender"),
tds = [tdName, tdAge, tdGender],
tr = $("<tr></tr>"),
tbody = $("#peopleList tbody");
tds.append(div);
tr.append(tdName).append(tdAge).append(tdTimetdGenderstamp);
tbody.append(tr);
如上面的代码所示,我尝试将3个tds包含在一个数组中,这样我就可以将div添加到所有数组中,但它不起作用。
答案 0 :(得分:1)
您尝试在vanilla JavaScript Array上使用jQuery .append
。 .append
仅适用于jQuery / DOM元素,而不适用于Arrays等JavaScript类型。
您的tds
数组包含jQuery / DOM元素,但数组本身并不是可附加的&#39;以你正在尝试的方式。
使用数组,您必须遍历数组,并手动将div附加到其中的每个元素。此外,由于您将单独附加3个单独的元素(即每次迭代1次,而不是同时3次),您必须自己手动.clone
div,否则您只需要将一个div附加到数组中的第一个项目,然后将移动相同的div移至第二个,再移至第三个。所以......
// tds.append(div); // Change this to...
for (var i=0; i< tds.length; i++) {
tds[i].append(div.clone())
}
或... 强>
你可以忘记完全使用数组,并使用jQuery克隆并为你附加div(正如你原来的问题暗示的那样)。以下是......
// Remove the following lines...
// tds = [tdName, tdAge, tdGender],
// tds.append(div);
// Then, after you add the td's to your row here...
tr.append(tdName).append(tdAge).append(tdGender);
// ...have jQuery find all the td's and clone+append your div to them in one hit:
tr.find('td').append(div)