gpt4 book ai didi

javascript - 如何在 jQuery 中使用自定义排序顺序对列表项进行排序

转载 作者:数据小太阳 更新时间:2023-10-29 04:04:48 25 4
gpt4 key购买 nike

我的问题与我在 Stack Overflow 上发现的许多其他问题非常相似,但又不完全相同。

我想根据每个项目中包含的跨度内容对列表项目进行排序——但使用我可以定义的排序顺序。下面是示例列表项的 HTML:

<li>
<span class="fname">John</span>
<span class="lname">Doe</span>
<span class="year">Sophomore</span>
</li>

我想根据“年”跨度的内容进行排序,但按时间顺序而不是按字母顺序。显然,顺序需要是:

  • 新生
  • 大二
  • 初级
  • 高级

我该怎么做?

仅供引用,我使用以下 jQuery 代码(完美运行)按姓氏字母顺序排序:

function sortByLastName(){
var myList = $('#foo ul');
var listItems = myList.children('li').get();
listItems.sort(function(a,b){
var compA = $(a).find('.lname').text().toUpperCase();
var compB = $(b).find('.lname').text().toUpperCase();
return (compA < compB) ? -1 : (compA > compB) ? 1 : 0;
});
$(myList).append(listItems);
};

最佳答案

为了匹配您的 sortByLastName() 函数,这将起作用:

function sortByYear(){
var myYears = ['Freshman', 'Sophomore', 'Junior', 'Senior'];
var myList = $('#foo ul');
var listItems = myList.children('li').get();
listItems.sort(function(a,b){
var compA = $.inArray($(a).find('.year').text(), myYears);
var compB = $.inArray($(b).find('.year').text(), myYears);
return (compA < compB) ? -1 : (compA > compB) ? 1 : 0;
});
$(myList).append(listItems);
}

只需使用 $.inArray()在数组中查找每个学年的索引。请注意,对于在数组中找不到的值,这将返回 -1,这会将这些元素放在列表的顶部。

关于javascript - 如何在 jQuery 中使用自定义排序顺序对列表项进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6591556/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com