さまざまな変数を使用してネストされたリストをソートしようとしています。だから、私は次のようなものを持っています:
<div id="title">
<h2>AWARDS by TYPE</h2>
<span>
<p>Sort by: </p>
<a href="#" class="sort-by-trophy">Trophy</a>
<a href="#" class="sort-by-gold">Gold</a>
<a href="#" class="sort-by-silver">Silver</a>
<a href="#" class="sort-by-bronze">Bronze</a>
<a href="#" class="sort-by-other">Other</a>
</span>
</div>
そしてリスト:
<ul id="accolade-display-list">
<li class="accolade-display-list-item"> <img src="/images/us/law/accolades/organisation/27.jpg">
<ul>
<li class="accolades-org-name"> Argentina Wine Awards </li>
<li class="accolades-org-details">Silver Medal - 2012, Argentina</li>
</ul>
</li>
<li class="accolade-display-list-item"> <img src="/images/us/law/accolades/organisation/2.jpg">
<ul>
<li class="accolades-org-name"> Royal Adelaide Wine Show </li>
<li class="accolades-org-details">Regional Trophy - 2012, Argentina</li>
</ul>
</li>
<li class="accolade-display-list-item"> <img src="/images/us/law/accolades/organisation/57.jpg">
<ul>
<li class="accolades-org-name"> Wines of Chile Awards </li>
<li class="accolades-org-details"> Blue Gold Medal - 2012, Argentina</li>
</ul>
</li>
</ul>
私がやりたいのは、クリックして「トロフィー」と言って、「トロフィー」が一番上にあるアイテムを並べ替え、次に「ゴールド」をクリックしてそれらのアイテムを一番上にまとめることです。私の例ではそれぞれですが、いくつかの「金」のアイテム、「銀」のアイテムなどがあるかもしれません。いくつかの方法を試しましたが、せいぜいリストをアルファベット順に並べ替えることができただけで、これは私が必要としているものではありません。これらは JSP から取得され、必要に応じて追加のクラスを追加できる可能性があります。必要に応じてリスト構造を変更することもできます。<li>
ネストされたリストを使用する理由は、単純に画像との位置合わせを容易にするためであり、将来追加の行 ( ) が存在する可能性があるためです。
リストをアルファベット順に並べ替える方法は、次のとおりです。
$("a.sort-by-trophy").click(function(){
console.log('sort-by-trophy clicked');
var list = $("ul#accolade-display-list");
var desc = false;
list.append(list.children().get().sort(function(a, b) {
var aProp = $(a).find(".accolades-org-name").text(),
bProp = $(b).find(".accolades-org-name").text();
return (aProp > bProp ? 1 : aProp < bProp ? -1 : 0) * (desc ? -1 : 1);
}));
});
とにかく、誰かが私が試してみたいことについて何かアイデアを持っていれば、本当に感謝しています.