2
我需要使用錨中的數字(某些行中不存在錨點)對錶中的行進行排序。表例如:jQuery,使用子元素中的數字排序表中的行
<table id="sortedtable" class="full">
<tbody>
<tr>
<th>Main tr</th>
</tr>
<tr>
<td>
<div style="float: left;">Title</div>
<a class="unreadcount" href="#">7</a>
</td>
</tr>
<tr>
<td>
<div style="float: left;">No anchor here :(</div>
</td>
</tr>
<tr>
<td>
<div style="float: left;">Javascripthatesme</div>
<a class="unreadcount" href="#">15</a>
</td>
</tr>
<tr>
<td>
<div style="float: left;">Yourox</div>
<a class="unreadcount" href="#">2</a>
</td>
</tr>
<tr>
<td>
<div style="float: left;">This has more than one word and no anchor</div>
</td>
</tr>
<tr>
<td>
<div style="float: left;">Title</div>
<a class="unreadcount" href="#">11</a>
</td>
</tr>
<tr>
<td>
<div style="float: left;">Big Bang Theory is not funny</div>
<a class="unreadcount" href="#">4</a>
</td>
</tr>
</tbody>
</table>
利用該解決方案在this question我能夠做一個半工作代碼:
var $table = $('table');
var rows = $table.find('tr').get();
rows.sort(function(a, b) {
var keyA = $(a).find('a.unreadcount').text();
var keyB = $(b).find('a.unreadcount').text();
if (keyA < keyB) return 1;
if (keyA > keyB) return -1;
return 0;
});
$.each(rows, function(index, row) {
$table.children('tbody').append(row);
});
你可以看到它在this jsFiddle工作。問題以及我需要幫助的地方是數字排序的方式(例如,8比32或12先出現),並且我需要忽略第一行(其中「Main tr」是),並將其始終置於頂部。
作爲一個額外的,如果你可以給我的方向來做一個按鈕,把表再次按原來的順序將是很棒的。
謝謝。
謝謝,它的工作真的很好:) – Vegon