使用jQuery在for循环中正确附加元素

时间:2014-05-21 13:18:20

标签: javascript jquery dom for-loop append

假设cache["s"].length = 9cache["n"]是DOM树中的元素,

cache[ "c" ] = $("<div/>");
for( n = cache["s"].length; n >= 0; n-- ){cache["n"].append(cache["c"]); }

似乎不起作用,我不知道为什么。 它将div元素ONCE而不是9次附加。

但是,如果我说,

cache[ "c" ] = "<div/>";
for( n = cache["s"].length; n >= 0; n-- ){cache["n"].append(cache["c"]); }

它有效,我得到9个元素,但它们没有正确插入到DOM树中。

问题是什么,如何在不失速的情况下解决问题?

2 个答案:

答案 0 :(得分:1)

cache["c"]是一个元素,这意味着当你一遍又一遍地追加它时,它不会创建一个新的div,而是取旧的并移动它。使用.clone()

cache["n"].append(cache["c"].clone());

答案 1 :(得分:1)

 cache[ "c" ] = $("<div/>");

这里cache[ "c" ]是div元素的一个实例,如果你尝试多次使用它,它会替换它的实例。

但是如果使用cache[ "c" ] = "<div/>";,则每次都附加新的div元素。

如果您想使用cache[ "c" ] = $("<div/>");,请尝试每次都附加其克隆。