2014-09-11 21 views
0

我有一個列表,我想獲得的值,然後對其進行排序。檢索列表的值,然後排序列表

我只用了幾個LI的下方,名單實際上是很多很多,較大的;完整列表包含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> 
+1

短名單是更好的確,但你至少說你有什麼問題(什麼錯誤)? – Regent 2014-09-11 13:33:43

+0

我只需要按照JS sortBy中的順序對它們進行排序。 JS根本無法進行排序。沒有控制檯錯誤或任何性質的東西,只是沒有被排序。而不是6M,9M,3M,我希望它能夠分類(例如)3M,6M,9M等等。非常簡單的概念,我認爲這會超級簡單。但事實證明這是一件很麻煩的事情。 – janderson133787 2014-09-11 13:35:13

+1

我沒有仔細檢查過你的代碼,但是我看到了使用jQuery 2.1.0在Chrome中正確排序的元素:http://jsfiddle.net/49ywz9xh/1/我是否誤解了你的問題?你問如何通過其他一些(例如更具擴展性)的機制對它們進行排序? – apsillers 2014-09-11 13:37:49

回答