Search code examples
javascriptrdatatablesshinydt

Display cell value in tooltip after hovering over a cell in DT::datatable


How do I utilize javascript to display the cell value in a tooltip after hovering over a particular cell in a DT::datatable? I decided to hide the long text after a certain width is reached (overflow-x: hidden; white-space: nowrap;) to maintain a clean format, and I would like the user to be able to see the full text if they choose to hover over a given cell.

datatable(df,
          class="compact",
          selection="none",
          rownames=F,
          colnames=NULL,
          options=list(dom="t",
                       pageLength=10
          ),
          escape=F)

Solution

  • Could you try this:

    datatable(head(iris), 
              options=list(initComplete = JS(
                "function(settings) {
                var table=settings.oInstance.api();
                table.$('td').each(function(){
                  this.setAttribute('title', $(this).html())
                  })
                }")))
    

    This sets a tooltip for every cell.

    To set the tooltip for a single specific cell:

    datatable(head(iris), 
              options=list(initComplete = JS(
                "function(settings) {
                var table = settings.oInstance.api();
                var cell = table.cell(2,2);
                cell.node().setAttribute('title', cell.data());
                }")))