2010-02-19 88 views
1

我有一個ul有幾個li元素,其中一個將始終有「活動」類。如何讓li.active元素始終出現在列表頂部?用ul裏面給定的類改變li元素的位置?

我不能控制產生這個列表的html輸出,所以我必須用css(最好)或javascript/jquery來做到這一點。 我想沒有辦法用CSS來做到這一點,但是擁有某種位置在列表屬性會很棒。

非常感謝!

回答

2

如果(我認爲你這樣做),你需要操作列表項的實際的順序,正如你猜測的那樣,CSS本身不會削減它。你用'jquery'來標記這篇文章,所以我想你知道那個庫的選擇器等等。當然,你只需要(a)選擇類「活動」的li元素,然後(b)將所述項目插入無序列表的頂部?這在jQuery中是完全可行的。下面是這樣做的一個非常簡單的方法:

$('ul').prepend($('.active')); 

這一切確實是抓住與類「活動」頁面上的第一個元素,並將其預先考慮到第一無序列表。這對於您的需求來說可能過於簡單,但希望它能幫助您找到更強大的解決方案。

+0

嘿,我認爲這應該是綽綽有餘。我試試看,並找回你。謝謝 – 2010-02-19 14:43:54

+0

這工作完美,再次感謝本 – 2010-02-21 15:16:49

+0

很高興聽到它爲你工作! – Ben 2010-02-21 16:45:03

4

如果我們假定列表項的高度將是恆定的(這是一個相當大的假設):

ul { 
    position: relative; 
    padding-top: 2em; 
} 

li { 
    height: 2em; 
} 

li.active { 
    position: absolute; 
    top: 0; 
    left: 0; 
} 
+0

這是一個非常好的主意,但我無法知道這些項目是否總會有相同的高度。 無論如何,我會保持這個想法,以防萬一沒有其他事情出現。謝謝大衛 – 2010-02-19 14:40:14