我想根据元素的标题/描述对列表进行排序。根据第一个词,分配权重以稍后定义自定义订单。从:列表 4 200 中的第三个元素列表 3 200 中的第一个元素列表 3 200 中的第一个元素列表 5 200 中的第四个元素列表 2 200 中的第二个元素列表 2 200 中的第二个元素至:列表 3 200 中的第一个元素列表 3 200 中的第一个元素列表 2 200 中的第二个元素列表 2 200 中的第二个元素列表 4 200 中的第三个元素列表 5 200 中的第四个元素我们未控制的任何标题将被分配一个预定的权重(最重),以便它出现在最后。var list = $('.list');var listItems = list.children('li').get();$(listItems).each(function() { var $this = $(this); var description, focusDescription; var weight; description = $this.find('span.description a').text(); focusDescription = description.split(' ')[0]; switch (focusDescription) { case 'First': weight = 1; // code block logic break; case 'Second': weight = 2; // code block logic break; case 'Third': weight = 3; // code block logic break; case 'Fourth': weight = 4; // code block logic break; default: weight = 5; // code block logic }});listItems.sort(function(a, b) { // code block logic})$.each(listItems, function(idx, itm) { list.append(itm);});
1 回答
MMMHUHU
TA贡献1834条经验 获得超8个赞
您可以通过定义一个 JS 对象来对这些进行排序,并将优先考虑每个单词。因此,您将使用此优先级作为排序功能的排名。您的 js 代码将如下所示:
var rank = {
First:0,
Second:1,
Third:2,
Fourth:3,
}
var list = $('.list');
var listItems = list.children('li').get();
listItems.sort(function(a, b) {
return rank[$(a).find('span.description a').text().split(' ')[0]] - rank[$(b).find('span.description a').text().split(' ')[0]]
})
$.each(listItems, function(idx, itm) {
list.append(itm);
});
添加回答
举报
0/150
提交
取消