【问题标题】:Tooltip for pagination buttons in DataTables数据表中分页按钮的工具提示
【发布时间】:2015-12-14 10:36:43
【问题描述】:

我有一个数据表,我必须在每行和分页按钮中显示工具提示。我已经在需要的地方实现了行的工具提示选项,但无法弄清楚我们如何为数据表中的分页按钮(上一个和下一个按钮)、搜索(文本框)和排序(下拉)等控件设置工具提示。

HTML:

<div class="container">      
<table cellpadding="0" cellspacing="0" border="0" class="dataTable" id="example">
   <thead>
        <tr>
            <th>Name</th>
            <th>Position</th>
            <th>Office</th>
            <th>Age</th>
            <th>Start date</th>
            <th>Salary</th>
        </tr>
    </thead>

    <tbody>
        <tr>
            <td>Tiger Nixon</td>
            <td>System Architect</td>
            <td>Edinburgh</td>
            <td>61</td>
            <td>2011/04/25</td>
            <td>$320,800</td>
        </tr>
        <tr>
            <td>Garrett Winters</td>
            <td>Accountant</td>
            <td>Tokyo</td>
            <td>63</td>
            <td>2011/07/25</td>
            <td>$170,750</td>
        </tr>
        <tr>
            <td>Ashton Cox</td>
            <td>Junior Technical Author</td>
            <td>San Francisco</td>
            <td>66</td>
            <td>2009/01/12</td>
            <td>$86,000</td>
        </tr>
        <tr>
            <td>Cedric Kelly</td>
            <td>Senior Javascript Developer</td>
            <td>Edinburgh</td>
            <td>22</td>
            <td>2012/03/29</td>
            <td>$433,060</td>
        </tr>
        <tr>
            <td>Airi Satou</td>
            <td>Accountant</td>
            <td>Tokyo</td>
            <td>33</td>
            <td>2008/11/28</td>
            <td>$162,700</td>
        </tr>
        <tr>
            <td>Brielle Williamson</td>
            <td>Integration Specialist</td>
            <td>New York</td>
            <td>61</td>
            <td>2012/12/02</td>
            <td>$372,000</td>
        </tr>
        <tr>
            <td>Herrod Chandler</td>
            <td>Sales Assistant</td>
            <td>San Francisco</td>
            <td>59</td>
            <td>2012/08/06</td>
            <td>$137,500</td>
        </tr>
        <tr>
            <td>Rhona Davidson</td>
            <td>Integration Specialist</td>
            <td>Tokyo</td>
            <td>55</td>
            <td>2010/10/14</td>
            <td>$327,900</td>
        </tr>
        <tr>
            <td>Colleen Hurst</td>
            <td>Javascript Developer</td>
            <td>San Francisco</td>
            <td>39</td>
            <td>2009/09/15</td>
            <td>$205,500</td>
        </tr>
        <tr>
            <td>Sonya Frost</td>
            <td>Software Engineer</td>
            <td>Edinburgh</td>
            <td>23</td>
            <td>2008/12/13</td>
            <td>$103,600</td>
        </tr>
        <tr>
            <td>Jena Gaines</td>
            <td>Office Manager</td>
            <td>London</td>
            <td>30</td>
            <td>2008/12/19</td>
            <td>$90,560</td>
        </tr>
        <tr>
            <td>Quinn Flynn</td>
            <td>Support Lead</td>
            <td>Edinburgh</td>
            <td>22</td>
            <td>2013/03/03</td>
            <td>$342,000</td>
        </tr>
        <tr>
            <td>Charde Marshall</td>
            <td>Regional Director</td>
            <td>San Francisco</td>
            <td>36</td>
            <td>2008/10/16</td>
            <td>$470,600</td>
        </tr>
    </tbody>
</table>
</div>

JS:

$(document).ready(function() {
var table = $('#example').DataTable();
$('#example tbody').on( 'click', 'tr', function () {
    if ( $(this).hasClass('selected') ) {
        $(this).removeClass('selected');
    }
    else {
        table.$('tr.selected').removeClass('selected');
        $(this).addClass('selected');
    }
});
$('#example').dataTable({ 
bJQueryUI: true,
retrieve: true,
    "sPaginationType": "full_numbers"}).makeEditable({"aoColumns": [
{   
    cssclass: "required" 
},
{
    cssclass: "required"
},
{
    indicator: 'Saving...',
    tooltip: 'Click to edit',  //tooltip for row
    type: 'text',
    submit:'Save'
},
{
    indicator: 'Saving...',
    tooltip: 'Click to enter age',  //tooltip for row
    loadtext: 'loading...',
    type: 'select',
    onblur: 'submit', 
    data: "{'':'Select', 'A':60,'B':12,'C':23,'D':25,'E':65}"
},
{
    indicator: 'Saving...',
    tooltip: 'Click to select',  //tooltip for row
    loadtext: 'loading...',
    type: 'select',
    onblur: 'submit',
    data: "{'':'Select...', 'A':'A','B':'B','C':'C'}"
},
{   cssclass: "required" }
]
});      
});

这是相同的JSFiddle。任何帮助将不胜感激。

【问题讨论】:

  • 检查了你提供的链接,我已经在行上实现了工具提示功能。但我想在分页按钮(下一个和上一个)上实现工具提示。有什么解决办法吗?

标签: jquery html datatables


【解决方案1】:

我猜你的工具提示是指标题?由于某些特殊原因,这不是本机 API 的一部分。在我看来,在language 构造中包含标题/工具提示选项是显而易见的......

$('.paginate_button').each(function() {
    var text = $(this).text(),
        title = isNaN(text) ? text+' page' : 'Page '+text;
    $(this).attr('title', title);
});

将在分页按钮上设置title,如“上一页”、“第3页”等。

$('.dataTables_filter input').attr('title', 'Type here to search in the table');

$('.dataTables_length select').attr('title', 'Select number of visible rows');

– 用于过滤器/搜索框和长度菜单。


将上述内容放在draw.dt 事件中,以便每次重绘表格时更新控制元素的title

table.on('draw.dt', function() {
    $('.paginate_button').each(function() {
          var text = $(this).text(),
            title = isNaN(text) ? text+' page' : 'Page '+text;
        $(this).attr('title', title);
    });
    $('.dataTables_filter input').attr('title', 'Type here to search in the table');
    $('.dataTables_length select').attr('title', 'Select number of visible rows');
}) 

【讨论】:

  • 感谢您的解决方案。但是还有一个问题,如果我对数据表中的字段进行排序、编辑和保存、更改条目的长度以及搜索后,工具提示就会停止工作。这是Updated Fiddle。所以基本上,这些函数需要在每个事件之后调用。那么这是一个可行的解决方案吗?
  • @Alorika,哦,是的 - 在绘图事件处理程序中隐含思考。查看更新...
【解决方案2】:

请考虑使用 titleAttr:,例如:

                    "buttons": [
                        {
                            extend: 'pageLength',
                            className: 'pageLength',
                            titleAttr: 'Search',
                            text: '<i class="fa fa-search fa-lg text-success"></i>'
                        },
                        {
                            extend: 'copy',
                            titleAttr: 'Copy to clipboard',
                            className: 'copyButton',
                            text: '<i class="fa fa-clone fa-lg text-success"></i>'
                        },
                        {
                            extend: 'excel',
                            titleAttr: 'Copy to excel file',
                            text: '<i class="fa fa-file-excel-o fa-lg text-success"></i>'
                        },
                        {
                            extend: 'pdf',
                            titleAttr: 'Copy pdf file',
                            text: '<i class="fa fa-file-pdf-o fa-lg text-success"></i>'
                        },
                        {
                            extend: 'csv',
                            titleAttr: 'Copy to csv file',
                            text: '<i class="fa fa-file-excel-o fa-g text-success"></i>'
                        },
                        {
                            extend: 'print',
                            titleAttr: 'Print the results',
                            title: '',
                            exportOptions: {
                                columns: ':visible',
                                stripHtml: false,
                            },
                            text: '<i class="fa fa-print fa-lg text-success"></i>',
                            customize: function (win) {
                                $(win.document.body)
                                    .css('font-size', '10pt')
                                    .prepend(
                                        '<img src="" style="position:absolute; top:0; left:0;" />'
                                    );

                                $(win.document.body).find('table')
                                    .addClass('compact')
                                    .css('font-size', 'inherit');
                            }
                        },
                    ]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-09
    • 1970-01-01
    • 1970-01-01
    • 2011-03-17
    • 1970-01-01
    相关资源
    最近更新 更多