如何避免在dataTables中为每个按钮使用自定义脚本?

时间:2018-04-26 08:23:12

标签: javascript jquery datatables

当我点击dataTable

中的特定按钮时,我写了一些customize脚本
buttons     : [
                {   extend          : 'copyHtml5'},
                {
                    extend          : 'excel', 
                    title           : "report" },
                {
                    extend          : 'pdf', 
                    title           : "report"},
                {
                    extend          : 'print',
                    text            : 'Print Selected',
                    orientation     : 'landscape',
                    title           : '',
                    autoPrint       : false,
                    customize       : function (win){

                         //TABLE STYLE
                         $(win.document.body).addClass('white-bg');
                         $(win.document.body).css('font-size', '10px');
                         $(win.document.body).find('table').css('font-size', 'inherit');    
                         $(win.document.body).find('table tr').css('border','1px solid black');

                         //PREPEND HEADER
                         //another lines to adding complex header

                         //APPEND FOOTER
                         //another lines to adding  complex footer
             ]

每个customize脚本仅适用于每个按钮,因此如果我想让其他按钮执行与按钮print相同的操作,我需要复制customize。那么,如何避免这种情况呢?我不想复制它,因为它不太可维护。

1 个答案:

答案 0 :(得分:0)

提取customize函数并将其传递给属性:

var buttons=[
    {   'extend'          : 'copyHtml5'},
    {
        'extend'          : 'excel', 
        'title'           : "report" },
    {
        'extend'          : 'pdf', 
        'title'           : "report"},
    {
        'extend'          : 'print',
        'text'            : 'Print Selected',
        'orientation'     : 'landscape',
        'title'           : '',
        'autoPrint'       : false,
        'customize'       : customize
    }
]

var customize = function (win){
    //TABLE STYLE
    $(win.document.body).addClass('white-bg');
    $(win.document.body).css('font-size', '10px');
    $(win.document.body).find('table').css('font-size', 'inherit');    
    $(win.document.body).find('table tr').css('border','1px solid black');
}