动态jQuery语句

时间:2012-02-15 09:04:28

标签: jquery

我有这个jQuery语句:

 $(currentEle).parent().parent("li").next().click()

其中currentEleli元素。

如果语句$(currentEle).parent().parent("li").next()的这一部分返回null,我想在语句中添加.parent().parent("li")

例如:$(currentEle).parent().parent("li").parent().parent("li").next().click()等等。 我添加了一个HTML列表以使事情更清晰。从列表中,如果currentEle被设置为表示E的li,并且我想选择列表中的下一个元素,即'F'。 $(currentEle).parent().parent("li").next()将为null,因此$(currentEle).parent().parent("li").parent().parent("li")将完成此任务。那么我该如何使它更通用呢?

 <ul>
        <li>A</li>
        <li>B
            <ul>
                <li>C
                    <ul>
                        <li>D
                            <ul>
                                <li>E</li>
                            </ul>
                        </li>
                    </ul>
                </li>
                <li>F</li>
            </ul>
        </li>
    </ul>

3 个答案:

答案 0 :(得分:3)

更新回答:

我向E id添加了li以简化代码。

<强> jQuery的:

var value = ($('#theE').parents('li').filter(function(index) {
    return $(this).next('li').length;
}).next().text());

alert(value); //F

<强> HTML:

 <ul>
        <li>A</li>
        <li>B
            <ul>
                <li>C
                    <ul>
                        <li>D
                            <ul>
                                <li id="theE">E</li>
                            </ul>
                        </li>
                    </ul>
                </li>
                <li>F</li>
            </ul>
        </li>
    </ul>

<强> JSFiddle DEMO

答案 1 :(得分:1)

我认为你的意思是

function main(){
    var curr = $(currentEle);

    while (getParent(curr) != null){
        curr = getParent(curr);
    }

    getParent(curr).next().click();
}


function getParent(element){
    if (element.parent().length > 0 && element.parent().parent('li').length > 0){
        return element.parent().parent('li');
    }
    return null;
}

答案 2 :(得分:0)

我认为您真正关注的是.parents()方法,按li过滤以查找祖先列表项:

$(currentEle).parents("li").last().next().click();

这样您就不必手动检查每个级别。