首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从边菜单对表进行排序

从边菜单对表进行排序
EN

Stack Overflow用户
提问于 2015-02-16 04:14:38
回答 3查看 120关注 0票数 2

听起来可能很奇怪。我想知道是否可以通过单击侧菜单链接而不是从表头对表进行排序。

我知道我们可以整理,分页.在表中使用一些jQuery库。

但我在这里的要求是从侧菜单中排序,而不是从表头中排序。

代码语言:javascript
复制
<table>
  <thead>
    <tr>
     <th>blabla</th>
     <th>blabla</th>
    </tr>
  </thead>
  <tbody>
   <tr>
    <td>blabla</td>
    <td>blabla</td>
   </tr>
 </tbody>
</table>
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-02-16 05:14:27

您可以使用tablesorter的sorton事件:

代码语言:javascript
复制
$(document).ready(function() {
  $("#mysortable").tablesorter();

  $("#navigator div").click(function() {
    var column = $(this).data("column") - 1;
    $("#mysortable").trigger("sorton", [[[column, 0]]]);
  });
});
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.tablesorter/2.19.1/js/jquery.tablesorter.min.js">
</script>
<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/jquery.tablesorter/2.19.1/css/theme.default.css"/>

<div id="navigator" style="float:left; max-width:200px;">
  <div data-column="1">Sort Column One</div>
  <div data-column="2">Sort Column Two</div>
  <div data-column="3">Sort Column Three</div>
</div>

<table id="mysortable" class="tablesorter" style="float:right; max-width:400px;">
  <thead>
    <tr>
      <th>Column 1</th>
      <th>Column 2</th>
      <th>Column 3</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>A</td>
      <td>2</td>
      <td>Z</td>
    </tr>
    <tr>
      <td>C</td>
      <td>3</td>
      <td>Y</td>
    </tr>
    <tr>
      <td>B</td>
      <td>1</td>
      <td>X</td>
    </tr>
  </tbody>
</table>

票数 1
EN

Stack Overflow用户

发布于 2015-02-16 05:08:31

这可能会给你一个如何做它的想法,伙计。

代码语言:javascript
复制
function sortColumn(c,n){
  var rows = $('#mytable tbody  tr').get();

  rows.sort(function(a, b) {

  var A = $(a).children('td').eq(n).text().toUpperCase();
  var B = $(b).children('td').eq(n).text().toUpperCase();

  if(A < B) {
    return -1*c;
  }
  if(A > B) {
    return 1*c;
  }
  return 0;
  });

  $.each(rows, function(index, row) {
    $('#mytable').children('tbody').append(row);
  });
}


 var sln = 1;
$("ul li").click(function(){
    sln *= -1;
    var n = $("ul li").index(this);
    sortColumn(sln,n);
});

小提琴这里

票数 3
EN

Stack Overflow用户

发布于 2015-02-16 04:55:39

以下是如何

代码语言:javascript
复制
function sort_rows(col_num, ascending) {
  var $rows = $('#'+table_id+' tr').not( function(i,e) {
      return $(e).find('th').length > 0;
    } );
  var sort_values = [];
  var indx_values = [];
  $rows.each( function (i,e) {
      sort_values.push( $(e).find('td:nth-child('+col_num+')').text() );
      indx_values.push(sort_values.length-1);
    } );

  var ordering;
  if (ascending) {
    ordering = function (a,b) { return a < b; };
  } else {
    ordering = function (a,b) { return a > b; };
  }

  var k = 0, val = sort_values[0];
  for(var i = sort_values.length-1; i > 0; i-=1) {
    for(var j = i; j >= 0; j-=1) {
      if (ordering(sort_values[j], val))
        val = sort_values[j];
        k = j;
      }
    }
    var temp = sort_values[j];
    sort_values[j] = sort_values[i];
    sort_values[i] = temp;
    var temp = indx_values[j];
    indx_values[j] = sort_values[i];
    indx_values[i] = temp;
  } 

  list_$rows = [];
  $rows.each( function (i,e) { list_rows.push($(e).clone()); } );
  $rows.remove();
  for(var i = 0; i < sort_values.length; i+=1) {
    $('#'+table_id).append( list_$rows[indx_values[i]] );
  }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28534426

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档