最初に、基本的な関数を使用してテーブルを並べ替えることができますsort
(行がまだ並べ替えられていない場合)。
マークアップ
(注: カスタムval
属性をデータ属性として追加しました)
<table>
<tbody>
<tr data-val="1"><td>1st</td></tr>
<tr data-val="4"><td>3rd</td></tr>
<tr data-val="7"><td>4th</td></tr>
<tr data-val="2"><td>2nd</td></tr>
</tbody>
</table>
jQuery
$('table').html(function() {
return $(this).find('tr').sort(function(a, b) {
return $(a).data('val') > $(b).data('val');
});
});
行がソートされたら、新しい行を挿入する位置を簡単に見つけることがdata-val
できdata-val
ますnewRow
:
var $newRow = $('<tr data-val="3"><td>Between 2nd and 3rd!</td></tr>');
var elementToInsertBefore = $('tr').filter(function() {
return $(this).data('val') >= $newRow.data('val');
}).get(0);
if (typeof elementToInsertBefore === 'undefined') {
$('table').append($newRow);
} else {
$newRow.insertBefore(elementToInsertBefore);
}
そのため、フィルタが を返さない場合(つまり、より大きいか等しい をelementToInsertBefore
持つ既存の行がなかった場合は、テーブルの最後に追加し、それ以外の場合は の前に挿入します。data-val
$newRow's
data-val
elementToInsertBefore
補足:for
ループを使用してelementToInsertBefore
. そうすれば、基準を満たす行が見つかったらすぐにbreak
アウトできます。これにより、それ以上の不必要な反復を防ぐことができます (多数の行を処理するときにパフォーマンスが大幅に向上する可能性があります)。
より複雑なものが必要な場合は、言及されている jQuery プラグインをご覧ください。