2012-04-15 13 views
0

Ich habe eine Tabelle, die dynamisch erstellt wird, was ich will ist, dass wenn ich klicke, eine Funktion führt, die mir die ID der letzten Spalte jeder Zeile, die ich verwendet Der folgende Code, wo ich die ID jeder Spalte warnen, aber es funktioniert nicht. Kann mir jemand helfen ???? dies ist die Schleife, die in der Funktionkann nicht die ID der letzten Zeile jeder Zeile in der Tabelle

$('table[id="' + tableID + '"]').find('tr').each(function() { 
     alert($('td:last-child').attr("id")); 

    }); 

, was ich in der Benachrichtigung erhalten, ist die ID der ersten Reihe der letzten Spalte in jeder Iteration der Schleife

+1

Ich bin pingelig, aber wenn Sie nach einem Element nach ID suchen, gibt es keine Notwendigkeit zu tun $ ('Tabelle [ID = "MyTabelle"]'), alle IDs in einem Dokument ist (sollte sein) so eindeutig Es ist nicht notwendig, sie zuerst nach Tabelle zu filtern. Mach einfach $ ('# mytabell'). Es ist auch viel schneller http://jsperf.com/selectors-tag-or-not (nicht, dass Sie jemals den Unterschied in den meisten Fällen bemerken würden ..) –

Antwort

0

Eine Alternative tun wollte könnte sein:

$('table#'+ tableID +' tr').each(function() { 
    var lastCellOfCurrentRowId = $(this).find('td:last-child').attr("id"); 
}); 

Die wichtige Sache ist die $ (thi s) innerhalb jedes Iterators. Es bezieht sich auf das aktuelle Element der Iteration, z. B. jedes Zeilenelement (TR) in der Tabelle. Von diesem Element können Sie tun, was Sie brauchen, in diesem Fall finden Sie nur die letzte Zellen-ID.

0

versuchen diese

$('table[id="' + tableID + '"] tr').each(function() { 
    alert($('td:last-child').attr("id")); 
}); 
0
verwendet wird

Sie müssen einen Kontext für den Selektor angeben, damit Sie nach der letzten <td> innerhalb der aktuellen Zeile suchen, die von der .each()-Funktion betrachtet wird, also ändern Sie sie in:

alert($('td:last-child', this).attr("id")); 
+0

ja es funktioniert, aber ich habe nicht verstanden, was mit Kontext gemeint ist, In jeder Iteration wird der Kontext automatisch durch die .each() geändert, weshalb wir sie explizit erwähnen müssen – zeeshan

+0

@zeeshan Wenn Sie die jQuery-Funktion mit einem Selektor aufrufen, durchsuchen Sie das Dokument, sofern Sie nicht explizit einen Kontext angeben (ein jQuery-Objekt oder DOM-Element), auf das die Suche beschränkt werden soll. Während also jede Iteration von ".each()" ein eigener Kontext ist, hat sie keinen Einfluss auf den Aufruf der jQuery-Funktion oder der Menge der Elemente, nach denen sie sucht. –

+0

@zeeshan Auch bin ich neugierig (und ein wenig verwirrt), warum Sie meins als die Antwort auf die Frage akzeptieren würden, dann kehren Sie das um und wählen stattdessen eine Antwort, die im Wesentlichen identisch ist und sieben Minuten nach meinem kam. –

0

Dies wird

$('#mytable tr td:last-child').each(function() { 
    alert(this.id); 
}); 

http://jsfiddle.net/JgtV4/

schaffen Solange eine Gruppe aller letzten TD, wie Sie nur TR dies und nicht einige weitere Aktionen auf jeder

Verwandte Themen