2009-10-29 11 views
23

Ich habe ein Stück des DOM, das ich in meine Seite einfügen möchte. Zur Zeit bin ich nur blind mit:jquery: mit appendTo in der vorletzten Zeile der Tabelle

$(myblob).appendTo(someotherblob); 

Wie kann ich das gleiche tun, aber myblob der zweiten bis letzten Zeile anhängen, die innerhalb someotherblob ist. someotherblob ist in diesem Fall eine Tabelle und ich möchte eine Zeile über die vorletzte Zeile einfügen.

Antwort

67
$('#mytable tr:last').before("<tr><td>new row</td></tr>") 
0

ich denke, dass Sie eine Zeile für jede Zeile der Tabelle zwischen de Sekunde und der letzten Zeile hinzufügen möchten.

in diesem Fall versuchen:

var rows=someotherblob.find("TR"); 
var nrows=rows.length; 
    rows.slice(1,(nrows-2)).each(function(){ 
    $(this).append(myblob); 
    }) 
1

Beachten Sie, dass mit vor() müssen die Elemente, die bereits in das Dokument eingefügt werden (ein Element, bevor ein anderer nicht einfügen kann, wenn sie nicht in der Seite).

So müssen Sie someotherblob einfügen zuerst:

$('selector to insert someotherblob at') 
    .append(someotherblob) 
     .find('table tr:last') 
      .prev() 
      .before(myblob); 
0

Ein bisschen ein Schuss im Dunkeln, aber ich glaube, dass Sie eine Fußzeile haben, oder vielleicht sogar die Dateneingabe, unten einer Tabelle, und Sie möchten Zeilen zu den Daten vor der Fußzeile hinzufügen. In diesem Fall sollten Sie Ihren Tisch zu dieser Umstrukturierung:

<table id="myTable"> 
    <thead> 
     <tr><!-- header row(s) --></tr> 
    </thead> 
    <tfoot> 
     <tr><!-- footer row(s) --></tr> 
    </tfoot> 
    <tbody> 
     <tr><!-- exciting and possibly dynamically inserted data goes here --></tr> 
    </tbody> 
</table> 

Ja, tbody nach tfoot kommen. Sonderbar, nicht wahr?

Dann können Sie einfach verwenden:

$("#myTable tbody").append(newrow); 
0

So einfach wie diese:

$("#TableName tr:last").prev().before("<tr><td>Hello World</td></tr>"); 
2

Sie können auch die Reihe von Index-Selektor auswählen.

$('#mytable tr').eq(-1).before("<tr><td>new row</td></tr>") 

Hier wird eq zur Auswahl der letzten Zeile verwendet. ist Null-Index und negativer Index beginnt mit dem letzten. also habe ich -1 im Index verwendet.

1
  • ich mit Antwort zu schätzen wissen von orin gegeben, die this one war.

  • Ich habe es versucht und festgestellt, dass die erforderliche Spalte buchstäblich über die Entire-Tabelle verschoben wurde. Es ist, weil ich nicht thead Tag für die Überschriftenspalte verwende. Wieder habe ich nach der Antwort gesucht und eine eigene Lösung gefunden.

  • Also hier ist es: In meinem Szenario war es erforderlich, Gesamtsumme aller Einträge in jeder einzelnen Zahl Typ Spalte anzuzeigen. Es war mir nicht möglich, Berechnungen durchzuführen, es sei denn, alle Zeilen sind im laufenden Betrieb belegt.

HTML:

<tr class="gTotal"> 
     <th colspan="4" class="head">Grand Total</th> 
     <th><?php echo $grandTtlResumeSntCnt; ?></th> 
     <th><?php echo $grandTtlEvalCnt; ?></th> 
     <th><?php echo $grandTtlUniqEvalCnt; ?></th> 
     <th><?php echo $grandTtlResCnt; ?></th> 
     <th><?php echo $grandTtlUniqResCnt; ?></th> 
</tr> 
</table> 

JQuery:

$('.gTotal').insertBefore('table>tbody>tr:nth-child(2)'); 

lassen Sie mich wissen, wenn ich Ihre Frage beantworten.

1
$('#mytable tr:last').prev().after("<tr><td>new row</td></tr>") 
Verwandte Themen