有没有更有效的方法来执行以下操作?
$(this).parent().parent().parent().parent().parent().addClass('finished');
请注意,我需要这个parent
概念,因为我在页面上有多个类似的项目。
有没有更有效的方法来执行以下操作?
$(this).parent().parent().parent().parent().parent().addClass('finished');
请注意,我需要这个parent
概念,因为我在页面上有多个类似的项目。
如果目标是获得第N 个父项,则可以.parents(selector)
与:eq()
selector混合使用,注意:eq(0)
获得第一项:
$(this).parents(':eq(4)').addClass('finished');
如果这是你经常使用的东西,并且添加适当的选择器不是一个选项,你可以创建自己的方法来获得你想要的东西:
$.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');