2010-02-23 2 views
43

Ich klicke auf einen Link in einer Tabellenzelle. Ich muss den Wert einer bestimmten Zelle in derselben Tabellenzeile ermitteln.jQuery - Abrufen des Textwerts einer Tabellenzelle in derselben Zeile wie ein angeklicktes Element

Ich habe einen Klick-Handler an den Link in der vierten Zelle angefügt. Dieser Click-Handler ruft eine Funktion auf, die ein modales Fenster öffnet. Wenn ein Formular im Modal übergeben wird, möchte ich auch den Wert von td class = "two" aus der Zeile übergeben, in der der Link auf dieses Modal geklickt wurde.

Hier ist die Funktion, die die modale sendet (der Problembereich wird den richtigen Wert für var etwas zu bekommen):

var Send = function() { 
    var Name = $('#name').val(); 
    var Something = $(this).closest('td').siblings('.two').text(); // version 1. doesn't work 
    var Something = $(this).closest('tr').siblings('td.two').text(); // version 2 also doesn't work 
    var Something = $(this).attr('class'); // version 3. just a test but also doesn't work 
    $.ajax({ 
     async: false, 
     data: { name: Name, somedata: Something }, 
     type: 'POST', 
     url: the url 
    });   
}; 

Das Problem ist, dass ich nicht den richtigen Wert für etwas bekommen. Es sollte der Wert von td class = two in derselben Zeile wie das angeklickte Element sein.

Die Art, wie alles zusammenkommt, ist. Klicken Sie auf den Ziellink, der eine Methode namens Send_Click() aufruft. Send_Click führt einige Validierungen durch und ruft dann Send() auf, aber der Wert für Something wird nie aufgefüllt. Ist das, weil this ist nicht, was ich denke, es ist? Hjelp!

+0

Heres schönen Artikel arbeitet http://codepedia.info/jquery-get-table-cell-td-value-div –

Antwort

66

Sie .children() wollen statt (documentation here):

$(this).closest('tr').children('td.two').text(); 
+0

Wie kann ich etwas wie Ihre für meine Frage hier verwenden: http://stackoverflow.com/questions/26004056/how-to-retrieve-the-tr-data-on-the-same-row-within-gridview-using -jquery-modal-w (Ich habe einen Link in derselben Zeile und zeige einige Daten aus einer anderen Spalte in derselben Zeile an. – SearchForKnowledge

4

so können Sie parent() verwenden, um das übergeordnete tr zu erreichen und dann mit der Klasse der td zu sammeln verwenden finden zwei

var Something = $(this).parent().find(".two").html();

oder

var Something = $(this).parent().parent().find(".two").html();

verwenden so viel wie parent() was auch immer die Tiefe des angeklickten Objekts nach der tr Reihe

Hoffnung das funktioniert ...

+0

Bitte Kommentare als Kommentar posten ts. Nicht als Antworten. – Sampson

+0

Entschuldigung, ich bin Neuling hier ... –

+0

Kein Schweiß von mir, Yasin. Ich schätze den Rat (und stimmte Sie wieder ab). – Stuart

58

Nick hat die richtige Antwort, aber ich wollte Sie auch die Zellendaten, ohne dass der Klassenname

var Something = $(this).closest('tr').find('td:eq(1)').text(); 

:eq(#) erhalten hinzufügen könnte hat einen nullbasierten Index (link).

+0

Wie kann ich etwas wie Ihre für meine Frage hier verwenden: http://stackoverflow.com/questions/26004056/how-to-retrieve-the-tr-data-on-the-same-row-within-gridview-using -jquery-modal-w (Ich habe eine Verknüpfung in derselben Zeile und zeige einige Daten aus einer anderen Spalte in derselben Zeile an. – SearchForKnowledge

+0

Ich war auf der Suche nach diesem, es funktioniert super mit jQuery Mobile, danke! – saman0suke

+0

Vielen Dank .Ihr Code rockt –

5

sollte es funktionieren:

var Something = $(this).children("td:nth-child(n)").text(); 
+0

Wie kann ich etwas wie Ihre für meine Frage hier verwenden: http://stackoverflow.com/questions/26004056/how-to-retrieve-the-tr-data-on-the-same -row-in-gridview-using-jquery-modal-w (Ich habe einen Link in der gleichen Zeile und zeige einige Daten aus einer anderen Spalte in derselben Zeile an. – SearchForKnowledge

4

Dies wird auch

$(this).parent().parent().find('td').text()