0

番号付きのクラスを持つ各アイテムのリストがあります。特定のクラスの後にデータを追加したいのですが、問題は項目番号が存在しない可能性があることです。これに対する簡単な解決策はありますか?

data = '<li class="3"></li>';
num = 2;

$('ul .'+num).append(data);

<ul>
    <li class="1"></li>
    // data should be appened here
    <li class="5"></li>
</ul>
4

1 に答える 1

1

簡単な解決策は、次のようにすることです。

  • そのクラスの要素が存在するかどうかを確認します。そうでない場合は、次の最大の要素が見つかるまで繰り返し、その要素を先頭に追加します。

本当にパフォーマンスが必要な場合は、バイナリ検索を実行して、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 の配列に保存する場合、またはリストに関する詳細情報を知っている場合、解決策はより簡単になる可能性があります。

それが役立つことを願っています。

于 2013-10-26T02:43:47.767 に答える