jQuery遍历问题

时间:2009-08-30 01:45:46

标签: jquery dom

我遇到了一个似乎不对的问题。我在DOM中的同一级别上有一对锚标签。结构如下:

div.mcoup
    div.lcoup
    div.rcoup
        div.rcoupmeta
            a.rcoupedit
            a.rcoupdelete
    div.updcoup
    div.delcoup

这是我正在使用的脚本:

    $('div.delcoup').hide();
    $('a.rcoupdel').click(function() {
        $(this).parent().parent().next('div.delcoup').slideToggle(400);
        $('div.updcoup').slideUp(400);
        $('div.crecoup').slideUp(400);
        return false;
    });

    $('div.updcoup').hide();
    $('a.rcoupedit').click(function() {
        $(this).parent().parent().next('div.updcoup').slideToggle(400);
        $('div.delcoup').slideUp(400);
        $('div.crecoup').slideUp(400);
        return false;
    });

这里奇怪的是a.rcouped正确地定位并影响div.updcoup,而使用相同的代码,a.rcoupdelete似乎对div.delcoup没有任何作用。它确实可以滑动其他元素。我的想法是,从a.rcoupdelete我们必须向上移动两个级别,然后找到具有delcoup类的下一个div。显然有些不对劲。

如何正确定位div.delcoup?

1 个答案:

答案 0 :(得分:3)

.next()专门选择DOM中的下一个项目(在同一级别)。 .updcoup版本正常工作,因为实际上,在找到锚点父级的父级(即div.rcoup)后,.next()元素为div.updcoup

要查看所有所选元素之后的元素,请使用.nextAll()

$(this).parent().parent().nextAll('div.delcoup').slideToggle(400);