jQuery – Abrufen des Textwerts einer Tabellenzelle in derselben Zeile wie ein angeklicktes Element

Lesezeit: 3 Minuten

Benutzer-Avatar
rg88

Ich klicke auf einen Link in einer Tabellenzelle. Ich muss den Wert einer bestimmten Zelle in derselben Tabellenzeile abrufen.

<tr>
    <td class="one">this</td>
    <td class="two">that</td>
    <td class="three">here</td>
    <td class="four"><a href="#">there</a></td>
</tr>
<tr>
    <td class="one">qwqw</td>
    <td class="two">dfgh</td>
    <td class="three">ui</td>
<td class="four"><a href="#">there</a></td>
</tr>

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

Hier ist die Funktion, die das Modal sendet (der Problembereich erhält den richtigen Wert für var Something):

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 erhalten kann. Es sollte der Wert von td class=two in derselben Zeile wie das angeklickte Element sein.

Die Art und Weise, wie das 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 ausgefüllt. Ist das weil this ist nicht das, was ich denke? Hallo!

Sie wollen .children() stattdessen (Dokumentation hier):

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

  • Wie kann ich so etwas wie Ihres für meine Frage hier verwenden: stackoverflow.com/questions/26004056/… (Ich habe einen Link in derselben Zeile und zeige einige Daten aus einer anderen Spalte in derselben Zeile an.

    – Suche nach Wissen

    23. September 2014 um 20:42 Uhr

Nick hat die richtige Antwort, aber ich wollte hinzufügen, dass Sie die Zellendaten auch abrufen können, ohne den Klassennamen zu benötigen

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

:eq(#) hat einen nullbasierten Index (Verknüpfung).

  • Wie kann ich so etwas wie Ihres für meine Frage hier verwenden: stackoverflow.com/questions/26004056/… (Ich habe einen Link in derselben Zeile und zeige einige Daten aus einer anderen Spalte in derselben Zeile an.

    – Suche nach Wissen

    23. September 2014 um 20:49 Uhr

  • Ich habe danach gesucht, es funktioniert hervorragend mit jQuery Mobile, danke!

    – saman0suke

    21. Mai 2015 um 16:30 Uhr

  • Ich bevorzuge diese Methode, da ich weniger Abhängigkeiten und weniger Code mag.

    – Usmann

    5. Oktober 2020 um 6:58 Uhr

Benutzer-Avatar
hhhqsun

es sollte gut funktionieren:

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

  • Wie kann ich so etwas wie Ihres für meine Frage hier verwenden: stackoverflow.com/questions/26004056/… (Ich habe einen Link in derselben Zeile und zeige einige Daten aus einer anderen Spalte in derselben Zeile an.

    – Suche nach Wissen

    23. September 2014 um 20:47 Uhr

Benutzer-Avatar
Yasin Ergul

Sie können also parent() verwenden, um zum übergeordneten tr zu gelangen, und dann find verwenden, um das td mit Klasse zwei zu sammeln

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

oder

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

Verwenden Sie so viel wie parent(), was auch immer die Tiefe des angeklickten Objekts gemäß der tr-Zeile ist

hoffe das klappt…

Benutzer-Avatar
Anna.P

Dies wird auch funktionieren

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

1283560cookie-checkjQuery – Abrufen des Textwerts einer Tabellenzelle in derselben Zeile wie ein angeklicktes Element

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy