2009-05-21 58 views
1

如何走到这一步的工作原理:如何使用appendTo添加对象但不附加在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)); 

这种方式引发以下错误:

No such interface supported.

+0

对我来说这两个例子都工作,火狐:3.0.10的jQuery:1.2.3,究竟是什么抛出错误? – duckyflip 2009-05-21 23:05:28

+0

后者在Firefox 3.0.10上使用jQuery 1.3失败了,但第一次运行。 – jacobangel 2009-05-21 23:56:43

回答

1

我相信这是由于实现。如果你看一下AppendTo的写法,它实际上是从items数组中获取每个元素并运行$(“ul”)。append(items [i])。

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

反正你不得不做这样的事情来完成你仿佛要的目标是什么:

$("ul").empty(); $(items).each(function(e, elem) {$('ul').append(elem);})

0

如果你改变你的第二个示例的最后一行这个

$('ul').empty().append(items); 
相关问题