2009-07-31 10 views
2

J'essaye de cloner un objet droppable en utilisant Jquery mais l'objet cloné n'est pas droppable.L'objet de clonage n'est pas droppable

$(document).ready(function(){ 
$("input[value='Add']").click(function(e){ 
e.preventDefault(); 
$("div.field:last").clone().insertAfter("div.field:last"); 
}); 

$(".field").droppable(); 

HTML

<div class="field"> 
Last Name<input type="text" value="" /> 
First Name<input type="text" value="" /> 
</div> 
<div class="field"> 
Last Name<input type="text" value="" /> 
First Name<input type="text" value="" /> 
</div> 
<input type="Submit" name="submit" value="Add" /> 

Firebug montre que l'objet cloné a la classe ui-largable, ainsi, toute idée pourquoi cela ne fonctionnerait pas?

EDIT
Réglage bool (true) ou enchaînant l'objet cloné avec .droppable() ne fonctionne pas non plus

Répondre

0

J'ai trouvé un moyen d'y arriver, en utilisant le .live, j'utilise un plugin .livequery qui fonctionne assez bien avec .live

Lorsque vous liez un événement « live », il se lie à tous les éléments actuels et futurs sur la page

$("input[value='Add']").livequery("click", function(e){ 
e.preventDefault(); 
$("div.field:last").clone().insertAfter("div.field:last"); 
$("div.field").droppable(); 
3

Vous devez copier les événements au clone; passer true à clone():

$("div.field:last").clone(true).insertAfter("div.field:last"); 

Vous devrez peut-être copier des données de l'original:

var original = $("div.field:last"); 
var clone = original.clone(true); 
clone.data('droppable', jQuery.extend(true, {}, original.data('droppable'))); 
/* Untested! */ 
+0

Il ne fonctionne pas même avec jeu de clone (true). – SteD