2009-05-21 59 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); 
相關問題