2010-05-02 5 views
5

J'essaie d'utiliser jquery pour cloner une ligne de table chaque fois que quelqu'un appuie sur le bouton d'ajout de ligne. Quelqu'un peut-il me dire ce qui ne va pas avec mon code? J'utilise le langage HTML + smarty templating à mon avis. Voici ce que mon fichier modèle ressemble à:jquery - clone nième rangée d'une table?

<table> 
      <tr> 
        <td>Description</td> 
        <td>Unit</td> 
        <td>Qty</td> 
        <td>Total</td> 
        <td></td> 
      </tr> 
    <tbody id="entries"> 
    {foreach from=$arrItem item=i name=inv} 
      <tr> 
        <td> 
          <input type="hidden" name="invoice_item_id[]" value="{$i.invoice_item_id}"/> 
          <input type="hidden" name="assignment_id[]" value="{$i.assignment_id}" /> 
          <input type="text" name="description[]" value="{$i.description}"/> 
        </td> 
        <td><input type="text" class="unit_cost" name="unit_cost[]" value="{$i.unit_cost}"/></td> 
        <td><input type="text" class="qty" name="qty[]" value="{$i.qty}"/></td> 
        <td><input type="text" class="cost" name="cost[]" value="{$i.cost}"/></td> 
        <td><a href="javascript:void(0);" class="delete-invoice-item">delete</a></td> 
      </tr> 
    {/foreach} 
    </tbody> 
    <tfoot> 
      <tr><td colspan="5"><input type="button" id="add-row" value="add row" /></td></tr> 
    </tfoot> 
    </table> 

Voici mon appel Jquery Javascript, que je sais est déclenché lorsque je mets dans un rapport d'alerte(). Donc le problème est avec moi ne sachant pas comment fonctionne jquery.

$('#add-row').live('click', function() {$('#entries tr:nth-child(0)').clone().appendTo('#entries');}); 

Alors qu'est-ce que je fais mal?

+0

qui rangée voulez-vous cloner? – SLaks

Répondre

6

Tout d'abord il n'y a pas une telle chose comme nth-child(0), nième enfant commence par 1

+0

existe-t-il également un moyen de cloner la ligne sans cloner l'attribut de valeur de chaque élément d'entrée? – John

+0

essayez simplement de copier le code HTML: '$ ('# entries'). Append ($ ('# entrées tr: nth-child (1)'). Html();)' – Mottie

0

ah je l'ai compris. nth-child (0) devrait être nth-child (1) si je veux sélectionner la première rangée. Le décompte commence à 1

1

Essayez d'utiliser:

$("tr:nth-child(0)", "#entries") 

voir si cela aide ....