为什么我可以使用appendTo添加对象但不在jQuery中追加?

时间:2009-05-21 22:55:04

标签: jquery

为什么会这样:

 var items = [];
 $.each([1,2,3,4], function() {
     items.push($('<li />').html('test' + this));
 });
 // clearing/appending as two seperate calls
 $('ul').empty();
 $(items).appendTo('ul');

但这不是吗?

 var items = [];
 $.each([1,2,3,4], function() {
     items.push($('<li />').html('test' + this));
 });
 // clearing/appending in one fluent call
 $('ul').empty().append($(items));

这种方式会引发以下错误:

  

不支持此类界面。

2 个答案:

答案 0 :(得分:1)

我认为这是由于实施。如果你看一下AppendTo的编写方式,它基本上是在items数组中运行$(“ul”)。append(items [i])。

追加虽然似乎不适用于数组。你会注意到即使没有空,你的线仍然无法工作。我并不完全理解append的工作原理,但我相信所发生的是函数顺序地遍历所有参数,但从不试图将元素从数组中分离出来。所以会发生的是它试图将一个数组附加到一个元素并失败。具有讽刺意味的是,这将起作用:$(“ul”)。empty()。append(items [0],items [1],items [2],items [3]);

无论如何,你必须做这样的事情才能完成你的目标:

  。

$( “UL”)空();   $(items).each(function(e,elem)   {$( 'UL')附加(ELEM);})

答案 1 :(得分:0)

如果您将第二个示例的最后一行更改为此

,该怎么办?
 $('ul').empty().append(items);