单击表标题栏时,Datatables启用/禁用列排序

单击表标题栏时,Datatables启用/禁用列排序,datatables,bootstrap-modal,Datatables,Bootstrap Modal,根据有关问题的一些建议,我能够解除绑定并再次绑定默认的列排序事件 但当存在一个或多个隐藏列时,结果是一种奇怪的排序行为 期望的行为: 我在Databases列的TH中有一个span,它必须打开一个带有远程url的引导模式。但是我不希望触发排序默认事件,所以在单击范围时,我放置了以下内容:$('th').off('click.DT') 然后我有一个处理程序,它触发模态,然后绑定顺序,再次侦听,没有问题:` $('body').on('click', '[data-toggle="modal"]',

根据有关问题的一些建议,我能够解除绑定并再次绑定默认的列排序事件

但当存在一个或多个隐藏列时,结果是一种奇怪的排序行为

期望的行为:

我在Databases列的TH中有一个span,它必须打开一个带有远程url的引导模式。但是我不希望触发排序默认事件,所以在单击范围时,我放置了以下内容:
$('th').off('click.DT')
然后我有一个处理程序,它触发模态,然后绑定顺序,再次侦听,没有问题:`

$('body').on('click', '[data-toggle="modal"]', function(){
        $($(this).data("target")+' .modal-body').load($(this).data("remote"));
            table.columns().every( function (i) {               
             if(table.columns().visible()[i]){
                table.order.listener( $('#Testata th:eq('+i+')'), i);
             }
            });
    });`
存在隐藏列时会出现问题: 带有一个隐藏列,即:`

'columnDefs': [          
            {
                "targets": [0],
                "visible": false
            }]`
order listener可用于所有列,但排序错误。 具有多个隐藏列,即:`

'columnDefs': [          
            {
                "targets": [0],
                "visible": false
            },
            {
                "targets": [3],
                "visible": false
            }
        ]`
顺序侦听器不能在所有列上工作,并且排序错误

在这里,要模拟场景,请单击第一列的(i)跨度


非常感谢。

您需要分配一个不同的运行编号,该编号只计算可见列:

$('body').on('click', '[data-toggle="modal"]', function(){
    $($(this).data("target")+' .modal-body').load($(this).data("remote"));
    var elIdx = 0;
    table.columns(':visible').every( function (i) {
        table.order.listener( $('#Testata th:eq('+elIdx+')'), i);
        elIdx++;
    });
});

您需要分配一个仅统计可见列的不同运行编号:

$('body').on('click', '[data-toggle="modal"]', function(){
    $($(this).data("target")+' .modal-body').load($(this).data("remote"));
    var elIdx = 0;
    table.columns(':visible').every( function (i) {
        table.order.listener( $('#Testata th:eq('+elIdx+')'), i);
        elIdx++;
    });
});