我有2个表,一个表有2列,另一个表有1列。单击某行时,该行将从表中删除,并且新TR将添加到对应表的末尾。现在我想按字母顺序排序。
像tablesorter这样的jQuery插件对于我想要做的事情来说是完全矫枉过正的。有没有一种简单的方法可以对表格进行排序?
修改:Fiddle
答案 0 :(得分:21)
这里有一个简单的表格分类器Fiddle demo here:
<table id="sort-table">
<tbody>
<tr><td>he</td></tr>
<tr><td>stackoverflow</td></tr>
<tr><td>by</td></tr>
<tr><td>vote</td></tr>
<tr><td>post</td></tr>
<tr><td>And</td></tr>
<tr><td>clicking</td></tr>
<tr><td>up</td></tr>
<tr><td>did</td></tr>
</tbody>
</table>
<br>
<button class="sort-table asc">sort ASC</button>
<button class="sort-table desc">sort DESC</button>
$('.sort-table').click(function(e) {
e.preventDefault(); // prevent default behaviour
var sortAsc = $(this).hasClass('asc'), // ASC or DESC sorting
$table = $('#sort-table'), // cache the target table DOM element
$rows = $('tbody > tr', $table); // cache rows from target table body
$rows.sort(function(a, b) {
var keyA = $('td',a).text();
var keyB = $('td',b).text();
if (sortAsc) {
return (keyA > keyB) ? 1 : 0; // A bigger than B, sorting ascending
} else {
return (keyA < keyB) ? 1 : 0; // B bigger than A, sorting descending
}
});
$rows.each(function(index, row){
$table.append(row); // append rows after sort
});
});
答案 1 :(得分:3)
我没有足够的声誉评论Zuul的答案,但它并不总是有效。检查这个小提琴:
$('.sort-table').click(function(e) {
e.preventDefault(); // prevent default button click behaviour
var sortAsc = $(this).hasClass('asc'), // ASC or DESC
$table = $('#sort-table'), // cache the target table DOM element
$rows = $('tbody > tr', $table); // cache all rows from the target table body
$rows.sort(function(a, b) {
var keyA = $('td',a).text();
var keyB = $('td',b).text();
if (sortAsc) {
return (keyA > keyB) ? 1 : 0; // A bigger than B, sorting ascending
} else {
return (keyA < keyB) ? 1 : 0; // B bigger than A, sorting descending
}
});
$rows.each(function(index, row){
$table.append(row); // append rows after sort
});
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<table id="sort-table">
<tbody>
<tr><td>Text 2003-01-27.pdf</td></tr>
<tr><td>Text 2004-03-23.pdf</td></tr>
<tr><td>Text 2004-04-01.pdf</td></tr>
<tr><td>Text 2004-12-31.pdf</td></tr>
<tr><td>Text 2010-04-14.pdf</td></tr>
<tr><td>Text 2011-02-07.pdf</td></tr>
<tr><td>Medic 2004-08-24.pdf</td></tr>
<tr><td>Bank 2009-10-06.pdf</td></tr>
<tr><td>Family 2010-10-19.pdf</td></tr>
<tr><td>Statement 2002-03-06.pdf</td></tr>
<tr><td>Statement 2002-03-06.pdf</td></tr>
<tr><td>Statement 2004-06-30.pdf</td></tr>
<tr><td>Statement 2010-03-31.pdf</td></tr>
<tr><td>Next.pdf</td></tr>
<tr><td>School 2002-03-04.pdf</td></tr>
<tr><td>School 2003-06-23.pdf</td></tr>
<tr><td>School 2010-06-10.pdf</td></tr>
<tr><td>Deal 2002-03-04.pdf</td></tr>
<tr><td>Deal 2002-06-03.pdf</td></tr>
<tr><td>Deal 2003-06-03.pdf</td></tr>
<tr><td>Vacation 2009-08-10.pdf</td></tr>
<tr><td>Vacation 2007-03-26.pdf</td></tr>
<tr><td>Vacation 2009-08-10.pdf</td></tr>
<tr><td>Vacation 2008-03-19.pdf</td></tr>
<tr><td>Vacation 2009-03-23.pdf</td></tr>
<tr><td>Vacation 2012-09-21.pdf</td></tr>
<tr><td>Vacation 2012-09-17.pdf</td></tr>
<tr><td>Vacation 2014-09-25.pdf</td></tr>
<tr><td>Vacation 2014-10-23.pdf</td></tr>
<tr><td>Work 2004-06-21.pdf</td></tr>
<tr><td>Work 2009-09-09.pdf</td></tr>
<tr><td>Work 2010-05-01.pdf</td></tr>
<tr><td>AGR 2002-03-05.pdf</td></tr>
<tr><td>AGR 2004-10-28.pdf</td></tr>
<tr><td>AGR 2005-11-22.pdf</td></tr>
<tr><td>AGR 2011-01-20.pdf</td></tr>
</tbody>
</table>
<br>
<button class="sort-table asc">sort ASC</button>
<button class="sort-table desc">sort DESC</button>
&#13;