2010-05-28 50 views
0

在prototypejs中,爲什麼下面的代碼從#test div中刪除匹配的div?將元素作爲副本推入陣列

讓我困惑的是,當它們被插入到#droparea中時,會發生這種情況,而不是當它們被插入到數組中時。

<div id="test"> 
    <div class="foo" id="22.1234"> 
     1 
    </div> 
    <div class="foo" id="22.1235"> 
     2 
    </div> 
    <div class="foo" id="53.2345"> 
     3 
    </div> 
    <div class="foo" id="53.2346"> 
     4 
    </div> 
</div> 

<div id="droparea"> 

</div> 

JS

var elArray = []; 
var els = $('test').select('.foo'); 

els.each(function(x){ if(x.id.split('.')[0] == 22){ elArray.push(x); } }); 
elArray.each(function(y){ $('droparea').insert({ bottom: y }); }); 
+2

請在您的代碼中使用有效的ID。他們必須從一封信開始,而不是一個數字。 http://www.w3.org/TR/REC-html40/types.html#type-id – nickf 2010-05-28 07:48:26

+0

這僅僅是一個例子。我的「真實」代碼更加複雜,我只是爲了向您展示原理。 – koko 2010-05-28 07:52:31

回答

3

我把你想複製/克隆元素融入到拖放區域吧,不動呢?

Google上的這條線程討論了how to clone an element。特別注意關於在重新插入文檔之前更改ID的警告。

+0

適用於我,但我仍然不明白爲什麼它的行爲如此:) – koko 2010-05-28 08:03:26

+0

因爲只有一個元素,而您剛將它推入其他區域。當你將一個元素存儲在一個數組中時,你只會存儲對它的引用,而不是它的一個副本。 – nickf 2010-05-28 08:08:22