2015-01-05 157 views
0

編寫工作代碼,按字母順序對列表進行排序。但代碼很大,並不普遍。我想減少它。您能否告訴我們如何讓代碼更具普遍性,這樣您就不必每次都添加一個新的ID,也不必每次都對ID進行排序。在jQuery中按字母順序排序

function sortUL(selector) { 
    $(selector).children("li").sort(function(a, b) { 
     var upA = $(a).text().toUpperCase(); 
     var upB = $(b).text().toUpperCase(); 
     return (upA < upB) ? -1 : (upA > upB) ? 1 : 0; 
    }).appendTo(selector); 
} 

<!-- Below is the code that needs to be reduced --> 
$('.mg-filter-item:nth-child(1)').attr('id', 'id-1'); 
$('.mg-filter-item:nth-child(2)').attr('id', 'id-2'); 
$('.mg-filter-item:nth-child(3)').attr('id', 'id-3'); 
$('.mg-filter-item:nth-child(4)').attr('id', 'id-4'); 
$('.mg-filter-item:nth-child(5)').attr('id', 'id-5'); 
$('.mg-filter-item:nth-child(6)').attr('id', 'id-6'); 
$('.mg-filter-item:nth-child(7)').attr('id', 'id-7'); 
$('.mg-filter-item:nth-child(8)').attr('id', 'id-8'); 
$('.mg-filter-item:nth-child(9)').attr('id', 'id-9'); 
$('.mg-filter-item:nth-child(10)').attr('id', 'id-10'); 


sortUL('#id-1 ul'); 
sortUL('#id-2 ul'); 
sortUL('#id-3 ul'); 
sortUL('#id-4 ul'); 
sortUL('#id-5 ul'); 
sortUL('#id-6 ul'); 
sortUL('#id-7 ul'); 
sortUL('#id-8 ul'); 
sortUL('#id-9 ul'); 
sortUL('#id-10 ul'); 
+0

什麼標記是什麼樣子?這是一個嵌套的ul> li> ul或獨立的列表嗎? – charlietfl

回答

1

您可以使用$.each

$.each($('.mg-filter-item ul'), function() { 
    sortUL($(this)); 
}); 

而且在sortUL

function sortUL(element) { 
    element.children("li")./* ... */ 
} 
+0

非常感謝!祝你今天愉快! – kaluk