0

私は Perch と呼ばれる CMS を使用しており、この動的にロードされたリストを別の順序に並べ替える必要があります。jQueryを使用してフロントエンドでそれを行う方法を見つけたいと思っていました。可能です?CMS によってコードが出力される方法を次に示します。

<ul>
    <li><a href="archive-r.php?tag=appetizers" rel="tag">Appetizers (4)</a></li>
    <li><a href="archive-r.php?tag=beverages" rel="tag">Beverages (2)</a></li>
    <li><a href="archive-r.php?tag=breakfast" rel="tag">Breakfast (2)</a></li>
    <li><a href="archive-r.php?tag=desserts" rel="tag">Desserts (4)</a></li>
    <li><a href="archive-r.php?tag=entrees" rel="tag">Entrees (14)</a></li>
    <li><a href="archive-r.php?tag=salads" rel="tag">Salads (14)</a></li>
    <li><a href="archive-r.php?tag=side-dishes" rel="tag">Side Dishes (8)</a></li>
    <li><a href="archive-r.php?tag=soups" rel="tag">Soups (1)</a></li>
</ul>

現在はアルファベット順です。次の順序を反映する必要があります。

前菜
スープ
サラダ
前菜
おかず
飲み物
デザート

どんな助けでも大歓迎です。

4

1 に答える 1

0

例については、 http://jsfiddle.net/29CGB/3/を参照してください。並べ替えるにはインデックスが必要です。この場合、カスタムの並べ替えを定義しています。タグの href は一意であるため、それを使用して並べ替えを定義しています。コードは次のとおりです。すべての項目を配列に追加していないことに注意してください。

var sortOrder = ['appetizers', 'soups', 'salads', 'entrees', 'side-dishes']; //make sure to finish this
var newList = $('ul li').sort(function (li1, li2) {
    return sortOrder.indexOf($(li1).find('a').attr('href').replace('archive-r.php?tag=', '')) > sortOrder.indexOf($(li2).find('a').attr('href').replace('archive-r.php?tag=', '')) ?  1 : -1;
});
$('ul').html(newList);
于 2013-08-26T22:41:16.290 に答える