各項目のdata-char値を使用して、このULを数値順およびアルファベット順にソートしたいと考えています。各項目のdata-char値を使用して、数値順にアルファベット順にソート
注:子ULエレメントではなく、親ULのみをソートしたいだけです。
<ul>
<li data-char="w">
<span>W</span>
<ul>
<li>WWWWWWWWWWWWWW</li>
</ul>
</li>
<li data-char="5">
<span>5</span>
<ul>
<li>55555555555555</li>
</ul>
</li>
<li data-char="a">
<span>A</span>
<ul>
<li>AAAAAAAAAAAAAA</li>
</ul>
</li>
<li data-char="1">
<span>1</span>
<ul>
<li>11111111111</li>
</ul>
</li>
</ul>
私が実行してjQueryを使ってこれを実現することができるよ:
function sortCharLi(a, b) {
var va = a.dataset.char.toString().charCodeAt(0),
vb = b.dataset.char.toString().charCodeAt(0);
// add weight if it's a number
if (va < 'a'.charCodeAt(0)) va += 100;
if (vb < 'a'.charCodeAt(0)) vb += 100;
return vb < va ? 1 : -1;
}
$('ul > li').sort(sortCharLi).appendTo('ul');
をしかし、私はそれはもはや選択肢ではありませんので、jQueryの依存関係を削除する必要よ。
どのように私はjQueryなしでこれを行うことができます任意のアイデア?
あなたのコードは、要素を並べ替える。さらに、既存のデータ構造を破壊します。 – zeroflagL