Clonage et renommage des éléments de formulaire avec jQuery

Je suis à la recherche d'un moyen efficace pour soit clone/renommer ou de les re-créer des champs d'adresse à offrir la capacité de soumettre des adresses multiples sur la même page. Donc, avec l'exemple de formulaire comme ceci:

<div id="addresses">
  <div class="address">
    <input type="text" name="address[0].street">
    <input type="text" name="address[0].city">
    <input type="text" name="address[0].zip">
    <input type="text" name="address[0].state">
  </div>
</div>
<a href="" id="add_address">Add address form</a>

De ce que je peux comprendre, il y a deux options pour ce faire:

  1. Recréer la forme du champ par champ et incrémenter l'index qui est le genre de commentaire:
    var index = $(".address").length;
    
    $('<`input`>').attr({
    name: 'address[' + index + '].street',
    type: 'text'
    }).appendTo(...);
    
    $('<`input`>').attr({
    name: 'address[' + index + '].city',
    type: 'text'
    }).appendTo(...);
    
    $('<`input`>').attr({
    name: 'address[' + index + '].zip',
    type: 'text'
    }).appendTo(...);
    
    $('<`input`>').attr({
    name: 'address[' + index + '].state',
    type: 'text'
    }).appendTo(...);
  2. Clone couche Existante et remplacer le nom du clone:
    $("div.address").clone().appendTo($("#addresses"));

Que l'on ne vous recommandons d'utiliser en termes d'être plus efficace et si son #2 pouvez-vous s'il vous plaît suggérer comment je pourrais aller sur la recherche et le remplacement de toutes les occurrences de [0] à [1] ([n]). Merci.

source d'informationauteur Micor