2016-07-13 4 views
3

Ich habe eine HTML-Tabelle, die ich erzeuge, die Inhalt enthält, der von einer Datenbank geladen wird. In einigen Bereichen habe ich Links, die einen Mitarbeiter mit seinem internen Profil verknüpfen.Ersetzen Sie <a> Element mit Wert seines Titelattributs in einer HTML-Tabelle

Bereit, klonen ich die Tabelle und verwandle sie in eine global bevor ich dataTables darauf laufen, so habe ich eine saubere HTML-Tabelle. Wenn die Tabelle exportiert wird, verwende ich unwrap, um die HTML-Links loszuwerden.

In einem meiner Felder verwende ich eine QuickInfo, die eine verkürzte Version des Titels und eine Vollversion bei Hover zeigt.

<a title="Super Long Title that is not truncated" data-toggle="tooltip" style="cursor:help">Super Long Title that is...</a> 

Ich muß versuchen, herauszufinden, wie ich den Inhalt dieser Spalte mit dem <a title=""> Wert ersetzen kann, anstatt der unwrapped Wert, der die verkürzte Version wäre. Irgendwelche Gedanken?

Unten finden Sie den Code, der ausgeführt wird, wenn der Export-Schaltfläche geklickt wird:

var openTickets; 
openTickets = $('#openTable').clone(); 

// ... 

$('#export').click(function() {  
    openTickets.find('a').contents().unwrap(); 

    // Export our table (Given html table, export to excel) 
    tableToExcel.download(openTickets.html(), 'Open Tickets - Export', 'xls', 'L'); 
}); 

Antwort

3

Um dies zu erreichen Sie eine Funktion übergeben können zu replaceWith(), die das title des a Elements wie folgt zurückgibt:

$('#export').click(function(){ 
    openTickets.find('a').replaceWith(function() { 
     return $(this).prop('title'); 
    }); 
    tableToExcel.download(openTickets.html(), 'Open Tickets - Export', 'xls', 'L'); 
}); 

Working example

0

Versuchen Sie, den Text für diese tags, bevor Sie unwrap() Wechsel:

$('#export').click(function(){ 

    //Add this 
    openTickets.find('a[data-toggle="tooltip"]').each(function(){ 
    $(this).html($(this).attr('title')) 
    }) 

    openTickets.find('a').contents().unwrap(); 
Verwandte Themen