2010-05-28 5 views
0

Dans prototypejs, pourquoi le code suivant supprime-t-il les divs correspondants du #test div? Ce qui m'embrouille, c'est que cela se produit quand ils sont insérés dans le #droparea, et non quand ils sont poussés dans le tableau.Pousser des éléments dans le tableau en tant que copie

<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

Veuillez utiliser des identifiants valides dans votre code. Ils doivent commencer par une lettre, pas un numéro. http://www.w3.org/TR/REC-html40/types.html#type-id – nickf

+0

C'est juste par exemple. Mon "vrai" code est beaucoup plus compliqué, j'ai fait cet exemple juste pour vous montrer le principe. – koko

Répondre

3

Je suppose que vous voulez copier/cloner les éléments dans la zone de dépôt, pas les déplacer? Cette discussion sur Google Groupes traite how to clone an element. Notez en particulier les mises en garde concernant la modification de l'ID avant de réinsérer le document.

+0

Fonctionne pour moi, mais je ne comprends toujours pas pourquoi il se comporte comme ça :) – koko

+0

Parce qu'il n'y a qu'un seul élément, et vous venez de le pousser dans l'autre zone. Lorsque vous stockez un élément dans un tableau, vous n'enregistrez qu'une référence, pas une copie de celui-ci. – nickf

Questions connexes