Jquery 当列具有链接时,Datatable列选择筛选器排序()不工作

Jquery 当列具有链接时,Datatable列选择筛选器排序()不工作,jquery,laravel,datatable,datatables,Jquery,Laravel,Datatable,Datatables,我正在使用datatable列选择过滤器。在其中一列我有html链接标记,这导致在顶部显示未排序的选择选项 <th><a href="{{route('customer.information', $customer->id)}}">{{ $customer->name }}</a></th> $(文档).ready(函数(){ $('#colSearch')。数据表({ “订单”:[], initCompl

我正在使用datatable列选择过滤器。在其中一列我有html链接标记,这导致在顶部显示未排序的选择选项

<th><a href="{{route('customer.information', $customer->id)}}">{{ $customer->name }}</a></th>


$(文档).ready(函数(){
$('#colSearch')。数据表({
“订单”:[],
initComplete:函数(){
this.api().列([0,1,2,3,4,5,6])。每个(函数(){
var列=此;
var colTitle=this.header().innerHTML;
var select=$('select'+colTitle+'')
.appendTo($(column.footer()).empty())
.on('change',function(){
var val=$.fn.dataTable.util.escapeRegex(
$(this.val()
);
柱
.search(val?“^”+val+“$”:“”,true,false)
.draw();
} );
column.data().unique().sort().each(函数(d,j){
var val=$('').html(d.text();
select.append(“”+val+“”);
} );
} );
}
} );
} );

您可以检查示例数据表,这是因为:

(1)
column.data()

(2) 然后对提取的数据进行排序。因此,您实际上使用的是
,而不是使用
Tiger Nixon
进行排序

要解决此问题,您可以等到删除HTML后再对数据进行排序。例如:

var opts=[];
column.data().unique().each(函数(d,j){
opts.push($('').html(d.text());
} );
opts.sort();
opts.forEach(功能(项、索引){
选择。追加(“”+项+“”);
} );

成功了,谢谢:)
<script>
      $(document).ready(function() {
      $('#colSearch').DataTable( {
         "order": [],

         initComplete: function () {
            this.api().columns([0,1,2,3,4,5,6]).every( function () {
               var column = this;
               var colTitle = this.header().innerHTML;
               var select = $('<select><option value="">Select ' + colTitle + '</option></select>')
                  .appendTo( $(column.footer()).empty() )
                  .on( 'change', function () {
                     var val = $.fn.dataTable.util.escapeRegex(
                        $(this).val()
                     );

                     column
                        .search( val ? '^'+val+'$' : '', true, false )
                        .draw();
                  } );

               column.data().unique().sort().each( function ( d, j ) {
                  var val = $('<div/>').html(d).text();
                  select.append( '<option value="' + val + '">' + val + '</option>' );
               } );
            } );
         }
      } );
   } );
   </script>