我有一份配方清单,如下所示,配方的一部分 (假设值)
<ul class="ing-list">
<li value="Water" percent ="80" name="Water">Water - 80%</li>
<li value="Whiskey" percent ="8" name="Water">Whiskey - 8%</li>
<li value="Beer" percent ="4" name="Beer">Beer - 4%</li>
<li value="Vodka" percent ="4" name="Vodka">Vodka - 4%</li>
<li value="Orange" percent ="4" name="Orange">Orange - 4%</li>
</ul>
每次我在这个列表中添加一个新项目时,我运行以下函数按百分比值对其进行排序。
function sortList(){
var list = $('.ing-list');
var listItems = list.find('li').sort(function(b,a){ return $(a).attr('percent') - $(b).attr('percent'); });
list.find('li').remove();
list.append(listItems);
}
虽然这对函数很好用,但如果百分比相等(可以进入十进制),我还需要按字母顺序对列表进行二次排序。
我目前无法找到一个不使用插件的解决方案。
任何建议都将不胜感激。
答案 0 :(得分:3)
您需要更改您定义的编译器,例如:
function(b, a) {
var result = $(a).attr('percent') - $(b).attr('percent');
if (result !== 0) {
return result;
}
//Do secondary sort decision here:
if ($(a).attr('name') < $(b).attr('name')) {
return 1;
}
if ($(a).attr('name') > $(b).attr('name')) {
return -1;
}
return 0;
}