2016-05-12 35 views
0

任何人都可以幫我排序問題我有DataTables。我需要按降序對我的表的第一列進行排序。該列包含一些帶有無序列表的單元格。我想要的是,它使用第一個列表項的內容對無序列表中的單元格進行排序。我使用columnDefs類型html,但這不足以解決此問題。該排序系統地將單元格與表格底部的無序列表進行排序,而不是按邏輯順序排列。Datatables html排序與包含無序列表的數據

我已經建立了一個的jsfiddle來說明這個問題:https://jsfiddle.net/lbriquet2/ka59nb5q/

$(document).ready(function() { 
$('#example').DataTable({ 
"order": [[ 0, "desc" ]], 
"columnDefs": [ 
     {"type": "html", "targets": [ 0 ] }, 
     {"width": "50%", "targets": [ 0, 1 ] } 
     ]  
}  
);}); 

預先感謝您的幫助!

回答

0

可以擴展與自定義的功能分類要做到這一點,就像這樣:

// register custom sorting function 
$.fn.dataTable.ext.order['dom-list'] = function (settings, col) 
{ 
    return this.api().column(col, {order:'index'}).nodes().map(function (td, i) { 
     // if there is ul>li we get the value of first 
     var $first_li = $('ul li:first', td); 
     if($first_li.length > 0) { 
      return $first_li.text(); 
     } 
     // there is no ul>li in td we get its value 
     return $(td).text(); 
    }); 
}; 

$(document).ready(function() { 
    $('#example').DataTable({ 
      "order": [[ 0, "desc" ]], 
      "columns": [ 
       { "orderDataType": "dom-list" },// set order type to custom function 
       null 
      ], 
      "columnDefs": [ 
       {"width": "50%", "targets": [ 0, 1 ] } 
      ] 
     } 
    ); 
}); 
+0

太謝謝你了!這完美的作品! :) – lbriquet

+0

我唯一的進步就是我感動orderDataType到ColumnDefs 「columnDefs」: \t \t \t \t { 「orderDataType」: 「DOM的名單」, 「目標」:0}, \t \t \t \t { 「寬度」:「50%」,「目標」:[0,1]} \t \t \t] – lbriquet