javascript - 使用 jquery 或 Javascript 自定义表排序

标签 javascript jquery html

我有一个包含三列(ID、日期和来源)的下表。我想根据源列对该表进行排序。 我不想按字母或数字排序。我希望它们的排序方式就像来自 ON 源的所有行将首先出现在表中,然后是来自 MB 源的所有行,依此类推Javascriptjquery。我搜索了几乎所有与排序相关的线程。但我没能解决这个问题。我对此很陌生,所以请帮助我完成这项工作。非常感谢您的帮助。

<table>
 <tr>
    <th>ID</th>
    <th>Date</th>
    <th>Source</th>
  </tr>
  <tr>
    <td>50</td>
    <td>2012-01-01</td>
    <td>ON</td>
  </tr>
  <tr>
    <td>94</td>
    <td>2013-06-05</td>
    <td>MB</td>
  </tr>
  <tr>
    <td>80</td>
    <td>2011-07-08</td>
    <td>AB</td>
  </tr>
  <tr>
    <td>50</td>
    <td>2012-01-01</td>
    <td>ON</td>
  </tr>
  <tr>
    <td>50</td>
    <td>2012-01-01</td>
    <td>MB</td>
  </tr>
</table>

最佳答案

可以根据源已知的顺序创建数组,并使用该数组索引进行排序

var sorters =['ON','AB','MB']

var $rows = $('tr:gt(0)').sort(function(a, b){
    var aSrcIdx =sorters.indexOf( $(a).find('td:last').text() );
    var bSrcIdx = sorters.indexOf( $(b).find('td:last').text());

    return aSrcIdx >  bSrcIdx;    
});

$('table').append($rows);

我单独保留了 html,但它肯定可以通过数据属性进行改进,以提高效率

DEMO

关于javascript - 使用 jquery 或 Javascript 自定义表排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30227960/

相关文章:

javascript - 访问javascript对象中的内部变量

jquery - 让div动态填充剩余空间

javascript - 与 location.hash 结合使用时 jQuery.animate() 的复杂性

javascript - <span> 光标未按预期工作

html - PIE、IE8、jQuery InnerFade 和 CSS3 border-radius - 再次

php - 一个函数中并排的两个表

javascript - 如何制作多个嵌套对象的数组?

java - 我可以在同一个应用程序中运行 RESTful 服务和 angularJS 以避免跨浏览器

jquery 等效于 css3 过渡缓入

javascript - 在 ember 模板中使用数组表示法获取对象属性