更有效的方式做多个父母

时间:2013-05-26 21:47:00

标签: javascript jquery

是否有更有效的方法来执行以下操作?

$(this).parent().parent().parent().parent().parent().addClass('finished');

请注意,我需要parent概念,因为我在页面上有多个类似的项目。

3 个答案:

答案 0 :(得分:3)

如果目标是获取第N 个父级,则可以将.parents(selector):eq() selector混合,注意:eq(0)获得第1个项目:

$(this).parents(':eq(4)').addClass('finished');

答案 1 :(得分:3)

如果这是你经常使用的东西,并且添加适当的选择器不是一个选项,你可以创建自己的方法来获得你想要的东西:

$.fn.parent_num = function(num) {
    var elem = [];
    this.each(function() {
        var el = this;
        while(num>0) {
            if (el.parentNode) el = el.parentNode;
            num--;
        }
        elem.push(el);
    });
    return $(elem || this);
};

用作:

$(this).parent_num(5).addClass('finished');

FIDDLE

答案 2 :(得分:2)

如果你有办法用CSS选择器获取元素,你可以这样做:

$(this).parents('selector');

.parents()