2013-03-27 47 views
2

在我的表(JQuery Datatables)中,有一行(最后一个)总是必须在最后(它是总数)。排序时保持排的位置

,因为他们喜欢我可以辨别其值:

<td><span class="last-row">MY VALUE</span></td> 

我如何可以使排序功能,始终把这种排在最后,无论哪个列被排序,并无论排序是ASC还是DESC?

+0

你要追加吗? http://api.jquery.com/append/ – btevfik 2013-03-27 02:55:43

+4

你有没有试过在''元素中包装这些元素?无论如何,这比使用特殊的课程在语义上更加正确。 – 2013-03-27 02:55:52

+0

@SiGanteng是正确的 - 如果你将总行放在''中,然后进行$'“”tbody“。html($(”tbody tr“)。sort(mySortFunc));'它应该工作在排序功能中没有任何特殊的逻辑。 – 2013-03-27 03:14:53

回答

3

只是为了充实什么SiGanteng建议,您可以使用元素tfoot在定义页脚行你的桌子。

<table> 
    <thead> 
     <tr> 
     <!-- modern browsers know how to render these, it is also used by screen readers and other assistive technologies --> 
     <td>header 1</td> 
     <td>header 2</td> 
     <td>header 3</td> 
     </tr> 
    </thead> 
    <tfoot> <!--ditto--> 
     <tr> 
     <td colspan="3">footer text</td> 
     </tr> 
    </tfoot> 
    <tbody> 
     <!-- regular html rows & cols here --> 
    </tbody> 
</table> 
0

如果它必须是一个TD元素,那么你必须创建一个自定义函数排序插件 http://www.datatables.net/plug-ins/sorting

继承人排序插件,始终将空字段在底部的一个例子,你可以通过调整以在列中查找您的特殊值,无论它是通过删除nbsp;为您的VAL,并在aoColums S型分配此

jQuery.fn.dataTableExt.oSort['mystring-asc'] = function(x,y) { 
var retVal; 
x = $.trim(x); 
y = $.trim(y); 

if (x==y) retVal= 0; 
else if (x == "" || x == "&nbsp;") retVal= 1; 
else if (y == "" || y == "&nbsp;") retVal= -1; 
else if (x > y) retVal= 1; 
else retVal = -1; // <- this was missing in version 1 

return retVal; 
} 
jQuery.fn.dataTableExt.oSort['mystring-desc'] = function(y,x) { 
var retVal; 
x = $.trim(x); 
y = $.trim(y); 

if (x==y) retVal= 0; 
else if (x == "" || x == "&nbsp;") retVal= -1; 
else if (y == "" || y == "&nbsp;") retVal= 1; 
else if (x > y) retVal= 1; 
else retVal = -1; // <- this was missing in version 1 

return retVal; 

} 

在数据表()函数赋值

... 
"aoColumns": [ 
    { "sType": 'mystring' }, 
...