関連する質問に関するいくつかの提案に続いて、デフォルトの列並べ替えイベントのバインドを解除して再度バインドすることができました。
しかし、1つ以上の非表示の列がある場合、奇妙な並べ替え動作で終了しました。
望ましい行動:
Databales列のTH内にスパンがあり、リモートURLでブートストラップモーダルを開く必要があります。しかし、デフォルトの並べ替えイベントがトリガーされたくないので、これを配置したスパンのonClick:$('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);
}
});
});`
この問題は、非表示の列がある場合に発生します。つまり、非表示の列が1つある場合: `
'columnDefs': [
{
"targets": [0],
"visible": false
}]`
順序リスナーはすべての列で機能しますが、並べ替えが間違っています。複数の非表示の列があります。つまり、 `
'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++;
});
});
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加