【问题标题】:Sort table with jquery after some tr在一些 tr 之后用 jquery 对表进行排序
【发布时间】:2012-11-02 19:50:38
【问题描述】:

我有这样的html表结构:

<table cellpadding="0" cellspasing="0" class="tablesorter zebra" id="articles-table">

    <tbody>...etc standart stuff...
    <tr>
    <td>
    </td>
    </tr>
    then i have 
    <tr id="123123">
    <td colspan="7">
     Analogs
    </td>
    </tr>
    <tr id="prcol">
    <td>
    <td>
</td>
</td>
<tr>
...
</table> 

我试过这样的脚本:

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 中,这很重要...而且我在 web 中看到的所有解决方案都非常庞大...我只需要在具有特定 id 的某些 tr 中进行简单的排序第二个 td ...我该如何解决?

我试过 tablesorter.com。但它不是我...

在这里尝试#2: link

第一行还有麻烦...

【问题讨论】:

  • 很抱歉,如果它没有帮助..认为它做了类似的事情..
  • 如果我们能看到一个起始表是什么样子的例子,以及排序后的表应该是什么样子,那将会非常有帮助。
  • @slashingweapon 查看小提琴...我只需要通过价格 (цена) td's 进行排序
  • @slashingweapon 所以根据 jsfiddle 首先在 tbody.analogs_Art 必须是 tr 价格为 3.36,然后是 3.62、3.99 和 6.14 在顶部...其他在底部的 td 价格中没有文字(问题在这里stackoverflow.com/questions/13387394/…)

标签: jquery html ruby-on-rails jquery-ui-sortable


【解决方案1】:

很难准确地说出你想要从你的英语中得到什么,但这是我想出的:

  1. 查找所有表。
  2. 对于每个表:
    1. 找到标有prcol 类的标题单元格。那就是我们要排序的列。
    2. 在标有sortable 类的表中查找所有tbody 标记。
    3. 对于每个可排序的主体:
      1. 根据可排序单元格的浮点值对行进行排序
      2. 用已排序的行替换旧行

为了完成这项工作,我将以下内容放入 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);
    });
});​

made a fiddle 显示了工作中的代码。我对表格进行了很多简化,以便更容易看到发生了什么,并且我将第三个表格主体设为未排序。

【讨论】:

  • hm,不那么准确:我有一张桌子,一张桌子,两个 tbody,对于第二个 tbody,我需要进行排序,而不是为 thead 或其他任何东西......只是为了 tr 在 tbody 中课堂艺术...
  • 这正是这段代码要做的。只需将 sortable 类添加到您希望可排序的正文中即可。
猜你喜欢
  • 2013-07-21
  • 1970-01-01
  • 2012-05-19
  • 1970-01-01
  • 2010-12-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-14
相关资源
最近更新 更多