2016-03-30 24 views
1

Tek sorum var. Sırasız bir listeyi alfabetik olarak sıralamak için bir javascript oluşturmam gerekiyor.Sipariş Listesi Alfabetik Olarak

<ul> 
    <li>alpha</li> 
    <li>gama</li> 
    <li>beta</li> 
    <li style="margin-right: 5px;">beta1</li> 
</ul> 
: Aşağıdaki kurulum ile, diğer öğenin "çocuk" olan bu listelerde birkaç öğe vardır müşterinin tasarım,

$(function() { 
    var $list = $(document.getElementsByClassName("list")); 
    $list.children().detach().sort(function (a, b) { 
     return $(a).text().localeCompare($(b).text()); 
    }).appendTo($list); 
}); 

Ancak: Ben şu işlevi ile bunu başardık

Tüm eşyalar aynı listede yer alıyor, ancak kullanıcı için "beta1" biraz sağa doğru ve diğer stillerle birleştirildiğinde, bir alt öğe gibi görünmesini sağlıyor.

Yukarıdaki işlevde, tüm öğeleri sıralayacak. Başka bir deyişle, "beta1" "ebeveynler" ile birlikte sıralanacaktır.

Başarılı olamadığım birkaç şeyi denedim, bu konuda nasıl bir fikre sahip olabileceğimi bilen var mı? Örneğin, bir liste öğesinin stil uygulanmış olup olmadığını kontrol etmem gerekiyor, eğer evet, bir önceki liste öğesine ekleyecek ve onu bir sipariş olarak verecekse.

Teşekkürler!

+0

Ben bu çözümde inandırıcı olup olmadığını bilmiyorum ama herhangi bir çocuk öğeler üzerinde bir 'veri ebeveyn = ""' özelliği olurdu, bu şekilde karmaşıklık çok. – DBS

+0

bunu kontrol edin! http://jsfiddle.net/stodolaj/De8Ku/ –

cevap

1

Liste yapısını, alt listeyi içerecek şekilde değiştirmeye ve ardından alt listeler için bir stil eklemeye ne dersin.

<ul> 
    <li>alpha</li> 
    <li>gama</li> 
    <li>beta 
    <ul> 
     <li>beta1</li> 
    </ul> 
    </li> 
</ul> 

CSS: Kaldırmak

li ul { 
    margin-right: 5px; 
} 
İlgili konular