按重量对列表进行排序,选择项目的开头并为其分配自定义重量

我想根据元素的标题/描述对列表进行排序。

根据第一个词,分配权重以稍后定义自定义订单。

从:

  • 列表 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);

});


开满天机
浏览 111回答 1
1回答

MMMHUHU

您可以通过定义一个 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);});
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript