2017-05-12 5 views
1

Die oben genannten hängt ein tr zu meiner HTML-Tabelle unten. die HTML-Tabelle ist wie folgt:Erhalte ID von td einer Tabelle

<table id="myTable" class='table table-bordered table-hover table-striped'> 
    <tr> 
     <th>Name</th> 
     <th>Specialization</th> 
     <th>Action</th> 
    </tr> 
</table> 

Jetzt will ich rufen Sie die ID aus dem Datenattribut von td class abzuzurufen, so dass ich die Id senden und an anderer Seite zur Bearbeitung weiterleiten.

+2

Warum nicht 'id' statt' data-did' verwenden? – Lixus

+0

auch was passiert, wenn mehr als eine Zeile hinzugefügt wird, möchten Sie alle IDs? – Pete

+0

Um doppelte Daten zu vermeiden. Wie die ID in der td wird behoben und mehrere tds werden für die gleiche ID erstellt und schließlich wird js verwirrt werden, welche id zu geben. –

Antwort

0

Zuerst um Ihre Daten Attribut sollten Sie sicherstellen, dass Sie Anführungszeichen um den Wert hinzu:

data-did='"+doc_id+"'...

So die gerenderte Zelle must in etwa so aussehen:

<td class='retrieve' data-did='n' style='cursor: pointer;'>EDIT</td>

(wobei n ein Wert ist)

Dann können Sie einfach diesen Wert mit jQuery abrufen:

$('specific-td').data('did'); //specific-td referes to a specific cell in a row, you must write that, this is just an example

alle Zeilen zu erhalten:

var ids = []; 
$('.retrieve').each(function() { 
    ids.push($(this).data('did')); 
}); 

Beispiel: Wenn Sie eine Taste zum Beispiel:

JSFiddle: https://jsfiddle.net/y2an0fu7/1/

+0

Ich habe Ihre Lösung versucht, aber es hat nicht funktioniert. Kannst du mir sagen, ob ich etwas falsch mache, wenn ich die Td.retrieve an den Tisch lege? –

+0

Schauen Sie sich das mitgelieferte Beispiel an. Es sollte dir helfen können. Das einzige, was Sie falsch gemacht haben, ist, Ihre Attributwerte nicht in Anführungszeichen zu setzen. –

0
// Clicks the edit field 
$("td.retrieve").on("click", function(e) { 

    var id = $(e.currentTarget).attr("data-did"); 

    // do with the ID what you want 
    alert(id); 

}); 

Ich bin mir bewusst, dass jQuery ein „Datum (...)“ hat die Funktion, aber ich habe mit, dass in der Vergangenheit manchmal auf Probleme stoßen. "attr (...)" wird etwas Ähnliches tun, verlässt sich aber speziell auf das Attribut anstelle von gespeicherten Objekten.

Verwandte Themen