来自li:nth-​​child(xy)的jQuery .parent()

时间:2012-05-26 15:16:55

标签: jquery parent css-selectors

我希望在这里找到帮助,我被困住了。

我使用此函数在菜单中获取精确的活动li元素(使用nth-child):

function getElementPathWithJquery(element) {
    return $(element).parents().andSelf().map(function() {
        var $this = $(this);
        var entry = '';        
        if(this.nodeName === "BODY" || this.nodeName === "HTML") {
        // do nothing
        } else {
        entry += this.nodeName;
        if (this.className) entry += "." + this.className.replace(/ /g, '.');
        if (this.id) entry += "#" + this.id;
        if ($this.siblings(entry).length > 0) entry += ":nth-child(" + $this.prevAll(entry).length + ")";
        }
        return entry;
    }).get().join(" ");
}

现在,处于请求的级别,父li元素将获得addClass('active')属性,但以下内容不起作用:

if( $('#MENU_MAIN').find("ul.menu-level-3>li").hasClass('active')) {
var path = getElementPathWithJquery($('#MENU_MAIN').find("ul.menu-level-3>li.active"));
$(path).parent().parent().css('border','3px solid red');
}

我需要确切的第n个元素的原因是菜单系统是一个类别系统,一个条目实际上可以属于更多类别。解决方案如:

$('#MENU_MAIN').find("ul.menu-level-3>li.active").parent().parent().css('border','3px solid red');

有效,但根据找到的条目所属的类别数量,不只是一个父级li可能有红色边框。

感谢您的帮助! 问候, 罗伯特

1 个答案:

答案 0 :(得分:0)

您可以使用parents()获取所有元素的祖先;您可以使用选择器来限制结果。