2010-09-23 5 views
3

Tenir compte le code HTML suivant:jQuery clone() ne copie pas les propriétés <select> DOM?

<a id="add" herf="#">add</a> 

<div class="list"> 
    <select> 
     <option>1</option> 
     <option>2</option> 
    </select> 
</div> 

et Javascript:

$('#add').click(function() { 
    var copy = $('.list').last().clone(); 
    copy.appendTo('body'); 
}); 

(OR: http://jsfiddle.net/5A5pN/)

Si vous choisissez une option de sélection avant de cliquer sur Add, vous remarquerez que le nouveau ajouté boîte de sélection utilise toujours 1 comme sa valeur d'origine, pas 2.

Des moyens de surmonter cela?

Merci!

+0

double possible: http://stackoverflow.com/questions/742810/clone-isnt-cloning-select-values ​​ – timaschew

Répondre

5

OUI! mais vous pouvez faire une solution de contournement. comme celui-ci,

$('#add').click(function() { 
    var orig = $('select',$('.list').last()); 
    var copy = $('.list').last().clone(); 
    $('select',copy).val(orig.val()); 
    copy.appendTo('body'); 
}); 

demo

+0

Merci pour votre réponse, a fonctionné comme un charme. J'apprécierais vraiment si vous pouviez brièvement expliquer comment cela fonctionne. – user435216