Je souhaite cloner une entrée <select> en HTML à l'aide de JQuery.
Je ne suis pas sûr de savoir comment s'y prendre, alors j'ai pensé poser la question ici.
Particulièrement intéressé par la meilleure façon de l'écrire dans le document.
Mon élément select ressemble à ceci:
<select id="options">
<option value="1">Opt 1</option>
<option value="2">Opt 2</option>
<option value="3">Opt 3</option>
</select>
Merci.
Voir: http://api.jquery.com/clone/
$('select#options').clone().attr('id', 'newOptions').appendTo('.blah');
appendTo (...) n'est qu'un moyen d'insérer les éléments clonés. D'autres méthodes peuvent être trouvées ici: http://api.jquery.com/category/manipulation/
Que dis-tu de ça?
<select id="options">
<option value="1">Opt 1</option>
<option value="2">Opt 2</option>
<option value="3">Opt 3</option>
</select>
//cible
<select id="options2">
</select>
$('#options').find('option').clone().appendTo('#options2');
Merci.
Le seul problème avec la réponse acceptée est que si votre sélection contient des groupes optionnels, ils ne seront pas copiés. Dans ce cas, le moyen le plus simple que j'ai trouvé était simplement de faire ceci:
$('#options2').html($('#options').html());
vous pouvez choisir l'option attr true avec select change, puis utiliser le clonage est ok.
$("#options").off("change").on("change", function() {
var val = $(this).val();
$(this).find("option[value=" + val + "]").attr("selected", true);
});
$("#options").off("change").on("change", function() {
var val = $(this).val();
$(this).find("option[value=" + val + "]").attr("selected", true);
});