2016-03-30 203 views
1

我有一個問題。我需要創建一個JavaScript來按字母順序排列無序列表。我用下面的函數來實現這一點:按字母排序列表

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

然而,在客戶的設計上有這些名單是其他項目的「孩子」的幾個項目,有如下設置:

<ul> 
    <li>alpha</li> 
    <li>gama</li> 
    <li>beta</li> 
    <li style="margin-right: 5px;">beta1</li> 
</ul> 

關於代碼,所有的項目都在同一個列表中,但是對於用戶來說,「beta1」稍微向右一點,並且與其他樣式相結合,它使它看起來像是一個子項目。

使用上面的函數,它將對所有項目進行排序。換句話說,「beta1」將與「父母」一起排序。

我嘗試了幾件事情沒有成功,所以有誰知道我該如何實現這個?即我的函數需要檢查一個列表項是否具有應用的樣式,如果是,它將把它附加到前一個列表項並將其作爲一個排序。

謝謝!

+0

我不知道這是不是在你的解決方案合理,但我想有一個'數據父=「」'屬性上的任何子項,這樣你刪除很多複雜性。 – DBS

+0

檢查此! http://jsfiddle.net/stodolaj/De8Ku/ –

回答

1

如何更改列表結構以包含子列表,然後爲子列表添加樣式。

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

CSS:

li ul { 
    margin-right: 5px; 
}