jQuery遍历问题

时间:2009-05-22 14:52:22

标签: jquery

我有一个可能无限嵌套的ol > li

在树中给出li,我需要将一些函数应用于给定li下面的所有其他li,但当前ol除外。举个例子:

例如:

<ol>
    <li>
        Do not apply to me
        <ol>
            <li>Do not apply to me</li>
            <li>Do not apply to me</li>
        </ol> 
    </li>
    <li>
        Do not apply to me
        <ol>
            <li id='given'>I am the "given" li</li>  <------------- you are here
            <li>Do not apply to me</li>
            <li>
                Do not apply to me
                <ol>
                    <li>Do not apply to me</li>
                    <li>Do not apply to me</li>
                </ol> 
            </li>
        </ol> 
    </li>
    <li>
        Apply to me
    </li>
    <li>
        Apply to me
        <ol>
            <li>Apply to me</li>
            <li>
                Apply to me
                <ol>
                    <li>Apply to me</li>
                    <li>Apply to me</li>
                </ol> 
            </li>
        </ol> 
    </li>
</ol> 

实现这一目标最优雅的方法是什么?

由于

2 个答案:

答案 0 :(得分:1)

你可以写:

   $("#given").parents("li:first").nextAll("li").find("li").andSelf();

答案 1 :(得分:1)

@ Gordon的答案将适用于给定的示例,但如果在包含#given的OL之后立即有另一个OL,则它将无效。

$("#given").parents("ol").nextAll("ol").find("li").each(function() {
    // function
});
$("#given").parents("li").nextAll("li").find("li").andSelf().each(function() {
    //function
});

这样可行,但可能有更优雅的方法来实现它。