检索列表的值,然后对列表进行排序

Retrieve values of list, then sort list

本文关键字:列表 排序 检索 然后      更新时间:2023-09-26

我有一个列表,我想获得它的值,然后对它进行排序。

我只使用了下面李的几个,列表实际上要大得多;完整列表包含下面sortBy中的所有值。但我认为为了简单起见,最好只列出几个

我只需要按照JS sortBy中的顺序对它们进行排序。JS根本无法进行排序。

没有控制台错误或任何类似性质的错误,只是没有进行排序。

而不是6M、9M、3M,我希望它被分类(例如)3M、6M、9M等等。很简单的概念,我觉得会非常简单。但事实证明,这是一件苦差事。

谢谢。

Javascript:

    jQuery(document).ready(function() {
        jQuery('ul.linkList').each(function() {
            var sortBy = ['Newborn', '3M', '6M', '9M', '12M', '18M', '24M', '2T', '3T', '4T', '4', '5', '6', '6X', '7', '8', '10', '12', '14', '16', '1 SZ', ' 1 SZ 0-3M', '1 SZ 3M-9M', '1 SZ 9M-24M', '1 SZ 2-4', '1 SZ 4-7', '1 SZ 7-16', 'S', 'M', 'L', 'XL', 'Hide extra values', 'View all'];  //Values to sort by once data is obtained
            var theList = jQuery(this);
            var listItems = theList.children('li').get(); //Get values from LI        
            var numHidden = 0;
            listItems.sort(function(a,b) {
                var indexA = jQuery.trim(jQuery(a).find('a').text());
                var indexB = jQuery.trim(jQuery(b).find('a').text());
                indexA = jQuery.inArray(indexA, sortBy);
                indexB = jQuery.inArray(indexB, sortBy);
                return (indexA < indexB) ? -1 : (indexA > indexB) ? 1 : 0;
            });
            theList.append(listItems);
        });
    });

HTML:

<ul class="linkList SizeChicklets" id="binValue-2">
      <li class="binValue">
        <input name="binId" value="size_name" type="hidden">         
        <input name="binValue" value="0-3 Months" type="hidden">                       
        <a href=".com/s?field_size_name=0-3+Months&amp;ie=UTF8&amp;refinementHistory=subjectbin%2Csize_name%2Cgeneric_text_2-bin%2Cprice%2Cbrandtextbin%2Cgeneric_text_1-bin&amp;searchBinNameList=subjectbin%2Csize_name%2Cgeneric_text_2-bin%2Cprice%2Cbrandtextbin%2Cgeneric_text_1-bin&amp;searchKeywords=*&amp;searchNodeID=5690131011&amp;searchRank=generic-one-desc-rank&amp;searchSize=12" rel="nofollow">
        <input type="checkbox">
        <span>        6M</span></a>
      </li>
      <li class="binValue">
        <input name="binId" value="size_name" type="hidden">         
        <input name="binValue" value="10" type="hidden">                       
        <a href=".com/s?field_size_name=10&amp;ie=UTF8&amp;refinementHistory=subjectbin%2Csize_name%2Cgeneric_text_2-bin%2Cprice%2Cbrandtextbin%2Cgeneric_text_1-bin&amp;searchBinNameList=subjectbin%2Csize_name%2Cgeneric_text_2-bin%2Cprice%2Cbrandtextbin%2Cgeneric_text_1-bin&amp;searchKeywords=*&amp;searchNodeID=5690131011&amp;searchRank=generic-one-desc-rank&amp;searchSize=12" rel="nofollow">
        <input type="checkbox">
        <span>        9M</span></a>
      </li>
      <li class="binValue">
        <input name="binId" value="size_name" type="hidden">         
        <input name="binValue" value="12" type="hidden">                       
        <a href=".com/s?field_size_name=12&amp;ie=UTF8&amp;refinementHistory=subjectbin%2Csize_name%2Cgeneric_text_2-bin%2Cprice%2Cbrandtextbin%2Cgeneric_text_1-bin&amp;searchBinNameList=subjectbin%2Csize_name%2Cgeneric_text_2-bin%2Cprice%2Cbrandtextbin%2Cgeneric_text_1-bin&amp;searchKeywords=*&amp;searchNodeID=5690131011&amp;searchRank=generic-one-desc-rank&amp;searchSize=12" rel="nofollow">
        <input type="checkbox">
        <span>        3M</span></a>
      </li>
</ul>

不确定为什么要尝试编写自己的排序?看看这篇stackoverflow的文章。如何使用jQuery按字母顺序对列表进行排序?