我在dataTable上有这个自定义排序器:
jQuery.fn.dataTableExt.oSort['abbr-date-asc'] = function(a,b) {
var x = a.match(/abbr="(.*?)"/)[1];
var y = b.match(/abbr="(.*?)"/)[1];
return ((x < y) ? -1 : ((x > y) ? 1 : 0));
};
当我进入调试器时,A变量中的内容是OLD HTML,即首次绘制页面时的内容。在绘制页面之后并在执行此代码^^之前的onReady函数中,我将表格中的TDS重绘为不同的HTML,我希望此自定义排序器可以选取。它正在拾起旧东西。有什么想法吗?
编辑:这是HTML
<span abbr="">
<span class="localtimeUTC" style="display: none;">Dec 03, 2011</span>
<span class="localtimeUTCabbr" style="display: none;">2011-12-03</span>
</span>
当我想对其进行排序时,这是点击页面上的HTML:
<span abbr="2011-12-03">Dec 03, 2011</span>
它正在拿起原件。我尝试在表定义中使用bUseRendered:false,没有骰子。我尝试将sort函数转换为闭包,没有骰子。
jQuery('#my_table').dataTable( {
"bJQueryUI": true,
"bAutoWidth": false,
"bUseRendered" : false,
"aoColumns" : [
{ sWidth: '5%', bSortable: false, bSearchable: false },
{ sWidth: '35%' },
{ sWidth: '15%' },
{ sWidth: '15%', sType: 'abbr-date', bSortDataType: "abbr-date" },
{ sWidth: '30%', bSortable: false, bSearchable: false }
],
}).show();
答案 0 :(得分:0)
好的,我找到了答案:我没有正确使用DataTable。我在DataTable之外使用我自己的JS重新渲染TD,但是使用了
的组合fnRender bUseRendered:false 萤火虫
我能够返回当前正确的HTML。事实证明,默认情况下,DataTable会保留原始表的缓存,并且通过使用这两件事我可以获得当前的HTML。