2012-02-09 43 views
3

a simple demo沿上,下兄弟姐妹遍歷有效

極力打造,將一些看起來什麼比這更好的當其準備插件效果。

請注意數字0,1,2

它們是當前元素的級別的簡單指示。0表示頂級和2最少。檢查演示here

每當我點擊某一列時,它將成爲主列(因此獲得0作爲其級別)其餘列使用相同的規則進行了平整。如果你看到我用來做這件事的片段,那很醜陋。

$("li").click(function() { 
    $(this).html(0); 

    //denote the first level 
    $(this).next().html(1); 
    $(this).prev().html(1); 

    //denote the second level 
    $(this).next().next().html(2); 
    $(this).prev().prev().html(2);  

    //denote the third level 
    $(this).next().next().next().html(3); 
    $(this).prev().prev().prev().html(3);  

    //denote the fourth level 
    $(this).next().next().next().next().html(4); 
    $(this).prev().prev().prev().prev().html(4);  
}); 

我絕對討厭它。如果我的專欄數量增加了,那麼我遇到了麻煩。我需要一些簡潔的東西來遍歷樹形結構(如.closest("li"))以及以下。 對於每一列,一旦主列發生變化,即可獲得其特定級別的標記。

+0

正如Felix所說,你應該改變問題標題,因爲你只對穿越兄弟姐妹感興趣。或者我們不明白這個問題。 – unludo 2012-02-09 12:43:55

回答

3

您可以使用prevAll[docs]nextAll[docs]

$(this).prevAll().each(function(i) { 
    $(this).text(i+1); 
}); 

$(this).nextAll().each(function(i) { 
    $(this).text(i+1); 
}); 

DEMO

順便說一句。你沒有在樹上往下走,你總是停留在同一層。

+0

+1優雅和索引參數的使用 – techfoobar 2012-02-09 12:31:32

+0

@Starx:我不明白你的意思。 – 2012-02-09 12:35:46

+0

是不是.next(),.nextAll()遍歷jquery的函數?無論如何,他們正在爲我的案件工作。謝謝。順便說一句,有沒有辦法結合.nextAll()&.prevAll()? – Starx 2012-02-09 12:43:00