2009-03-02 8 views

Répondre

7
where_you_want_it.before(newRow) 

ou

newRow.insertBefore(where_you_want_it) 

- MarkusQ

+0

Utilisez .after() à la place! – Heitor

5

Plutôt que ceci:

$("#mytable tbody").append(newRow); 

vous allez vouloir faire quelque chose comme ceci:

$("#id_of_existing_row").after(newRow); 
9
var newRow = $("<tr>...</tr>"); 
$("#idOfRowToInsertAfter").after(newRow); 

La clé est de savoir l'id de la ligne que vous souhaitez insérer la nouvelle ligne après, ou au moins à venir avec une syntaxe de sélection qui vous obtiendra cette ligne.

jQuery docs on after()

+1

+1 pour avoir fourni un lien vers la documentation officielle – mbillard

5

Avec:

var newTr = $('<tr>[...]</tr>'); 

Vous pouvez ...

  1. Insérer après (ou avant si vous le souhaitez) une autre ligne que vous connaissez un ID (ou tout autre propriété):

    $('#<id of the tr you want to insert the new row after>').after(newTr) 
    
  2. Insérer après un indice de ligne particulière (indices sont 0-base, et non base 1):

    $($('table#<id> tr')[<index>]).after(newTr) 
    
  3. ... ou comme vous l'avez mentionné, le milieu absolu est possible:

    var existingTrs = $('table#<id> tr') 
    $(existingTrs[parseInt(existingTrs.length/2)]).after(newTr) 
    
0

Si, par exemple u placer une image d'insertion dans votre table ce sera quelque chose comme ceci:

Votre dernière cellule dans votre table:

<td> <img class=\"insertRow\" src=\"/images/imgInsertRow.jpg\" /> </td> 

Votre code jquery:

$('table td img.insertRow').click(function(){ 
    var newRow=$('<tr>........</tr>'); 
    $(this).parent().parent().after(newRow); 
}); 
Questions connexes