我正在尝试使用不同的变量对嵌套列表进行排序。所以,我有以下内容:
<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);
}));
});
无论如何,如果有人对我可以尝试的东西有任何想法,我将不胜感激。