在一些tr之后用jquery对表进行排序
我有这样的html表结构:
...etc standart stuff... then i have Analogs ...
我试过这样的剧本:
jQuery(function($) { var table = $('table'); $(document).ready(function () { $('#prcol') .each(function(){ var th = $(this), thIndex = th.index(), inverse = false; th.click(function(){ table.find('td').filter(function(){ return $(this).index() === thIndex; }).sortElements(function(a, b){ return $.text([a]) > $.text([b]) ? inverse ? -1 : 1 : inverse ? 1 : -1; }, function(){ return this.parentNode; }); inverse = !inverse; }); }); }); });
但主要的麻烦是它正在排序所有…但我只需要那个,在我的tr之后使用id 123123
并在页面加载时排序…
我需要通过我的浮点数排序,这只是在第二个div中! 在id = 123的tr中,这很重要…我在网上看到的所有解决方案都是巨大的……我只需要在某些特定id中使用简单排序第二个td …我该如何解决?
我试过tablesorter.com。 但它不是我的…不能只为一些tr定制它…而且如果加载文件我也需要它作为分类器。
在这里尝试#2: 链接
第一排还有麻烦……
很难从你的英语中准确地说出你想要的东西,但这是我想出的:
- 查找所有表格。
- 对于每个表:
- 找到标有
prcol
类的标题单元格。 这是我们要排序的列。 - 找到标有
sortable
类的表中的所有tbody
标记。 - 对于每个可排序的机构:
- 根据可排序单元格的浮点值对行进行排序
- 用排序的行替换旧行
- 找到标有
为了完成这项工作,我将以下内容放入jQuery的文档就绪事件中:
$("thead .prcol").each(function(thIdx, sortElem) { // find our column index var index = $.inArray(sortElem, $(sortElem).closest('tr').children()); var colSelector = "td:eq(_n_)".replace('_n_', index); $(sortElem).closest('table').children('tbody.sortable').each(function(tbIdx) { var rows = $(this).children('tr'); rows.sort(function(left, right) { var leftText = $(colSelector, left).text(); var rightText = $(colSelector, right).text(); var leftValue = parseFloat(leftText) || 10000; var rightValue = parseFloat(rightText) || 10000; return leftValue - rightValue; }); $(this).html(rows); }); });
我做了一个小提琴 ,显示了工作中的代码。 我简化了表格以便更容易看到发生了什么,并且我将第三个表格主体取消了。