簡単な解決策は、次のようにすることです。
- そのクラスの要素が存在するかどうかを確認します。そうでない場合は、次の最大の要素が見つかるまで繰り返し、その要素を先頭に追加します。
本当にパフォーマンスが必要な場合は、バイナリ検索を実行して、DOM をあまりクエリしないようにすることができます。
var data = '<li class="3"></li>';
var $ul = $('ul');
var num = 2;
var $li;
var $currentLi = $ul.find('li.' + num);
// Go through the iterative search if the li wasn't found.
if ($currentLi.length === 0) {
// Iterate and find the right spot
var $lis = $ul.find('li');
var elIndex = 0;
var currentNumber = $lis.first();
// Iterate until we found the sweet spot or we're at the end of the lis
while (currentNumber < num && elIndex < $lis.length) {
++elIndex;
$currentLi = $lis.eq(elIndex);
currentNumber = parseInt($currentLi.attr('class'));
}
// By here you will have the $currentLi found.
}
$currentLi.append(data);
リストの順序を JavaScript の配列に保存する場合、またはリストに関する詳細情報を知っている場合、解決策はより簡単になる可能性があります。
それが役立つことを願っています。