代码之家  ›  专栏  ›  技术社区  ›  denoise

DataTables列、列定义和行回调HTML5初始化

  •  0
  • denoise  · 技术社区  · 7 年前

    我目前有一个datatable(1.10.18版),里面有几个js选项,但我需要让我的代码更具可重用性,我正在尝试用html5 data-*属性初始化我的datatable。

    <table id="dataTable" cellspacing="0" width="100%" data-source="ajax.mysource.php">
        <thead>
            <tr>
                <th>Name</th>
                <th>Address</th>
                <th><i class="fas fa-low-vision"></i></th>
            </tr>
        </thead>
    </table>
    

    我的jQuery代码如下所示:

    var dataTable = $('#dataTable').DataTable({
        processing: true,
        serverSide: true,
        ajax: $('#dataTable').data('source'),
        columns: [
            { 'data': 'name' },
            { 'data': 'address' },
            { 'data': 'visible' }
        ],
        order: [[ 1, 'asc' ], [ 0, 'asc' ]],
        responsive: true,
        nowrap: true,
        pageLength: 15,
        lengthChange: false,
        select: 'single',
        columnDefs: [
            {   targets: 0, width: "110px" },
            {   targets: 1, width: "150px" },
            {   targets: 1, render: $.fn.dataTable.render.ellipsis(80) },
            { targets: 2, render: $.fn.dataTable.render.visibilityIcon() }
        ],
        rowCallback: function(row, data, index) {
            if (data.visible == "0") {
                $(row).addClass("notVisible");
            }
        }
    });
    

    每个datatable都有一些常用的选项,但如果我可以使用html5 data-*属性直接在html中设置列、列定义和行回调,那就太好了,这样我就可以对不同的表使用相同的代码,比如:

    <th data-columns="address" data-column-defs="{targets: 1, width:'150px'}" data-row-callback="function...">Address</th>
    

    除了排序、排序和页面长度之外,我还没有发现如何使用html5-*属性。

    用html5设置这个选项实际上可以用datatables实现吗。js?

    0 回复  |  直到 7 年前
        1
  •  2
  •   Recep Karadas    7 年前

    首先,您需要1.10.5版,如前所述 here

    从v1开始。10.5 DataTables还可以使用从HTML5数据-*属性读取的初始化选项

    然后必须将数据属性放在table元素而不是column元素上。

    <table  id="example"
    data-column-defs='[{"targets": 0, "width": "200px"}]' 
    data-page-length='2'
    data-class="dataTable" 
    data-order='[[ 1, "asc" ]]'
    data-columns='[{"data": "name"}, {"data": "position"}]'
    >
        <thead>
            <tr>
                <th>Name</th>
                <th>Position</th>
                <th>Salary</th>
                <th>Start Date</th>
                <th>office</th>
            </tr>
        </thead>
    
    </table>
    

    以下是完整的片段

    var data = [
        {
            "name":       "Tiger Nixon",
            "position":   "System Architect",
            "salary":     "$3,120",
            "start_date": "2011/04/25",
            "office":     "Edinburgh"
        },
        {
            "name":       "Garrett Winters",
            "position":   "Director",
            "salary":     "$5,300",
            "start_date": "2011/07/25",
            "office":     "Edinburgh"
        },
        {
            "name":       "Jane Doe",
            "position":   "SW Architect",
            "salary":     "$5,300",
            "start_date": "2011/07/25",
            "office":     "Edinburgh"
        },
        {
            "name":       "John Doe",
            "position":   "SW Developer",
            "salary":     "$5,300",
            "start_date": "2011/07/25",
            "office":     "Edinburgh"
        }
    ];
    var oTable = $('#example').dataTable({
    	data: data
    
    });
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <link href="https://cdn.datatables.net/1.10.19/css/jquery.dataTables.min.css" rel="stylesheet"/>
    <script src="https://cdn.datatables.net/1.10.5/js/jquery.dataTables.min.js"></script>
    <table  id="example"
    data-column-defs='[{"targets": 0, "width": "200px"}]' 
    data-page-length='2'
    data-class="dataTable" 
    data-order='[[ 1, "asc" ]]'
    data-columns='[{"data": "name"}, {"data": "position"}]'
    >
        <thead>
            <tr>
                <th>Name</th>
                <th>Position</th>
                <th>Salary</th>
                <th>Start Date</th>
                <th>office</th>
            </tr>
        </thead>
        
    </table>
    推荐文章