2012-02-09 42 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