1

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

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

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

4

3 回答 3

3

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

$(this).parents(':eq(4)').addClass('finished');
于 2013-05-26T22:05:39.020 回答
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');

小提琴

于 2013-05-26T22:11:02.660 回答
2

如果您有任何方法可以使用 CSS 选择器获取元素,您可以这样做:

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

。父母()

于 2013-05-26T21:48:42.423 回答