jQuery:parent()乘以3-如果我不知道选择器,如何避免堆积父对象

jQuery:parent()乘以3-如果我不知道选择器,如何避免堆积父对象,jquery,parent,Jquery,Parent,我找不到这个问题的快速答案 我在点击事件中使用$this 我试图在不知道选择器的情况下选择三级以上的元素 $(this).parent().parent().parent().attr('id') 这很好,但是有更好的方法吗 像parent3x或类似的?您可以尝试使用。eq是零基索引,所以第一个元素的索引为零,第三个元素的索引为2 $(this).parents().eq(2).attr('id'); 这等于: $(this).parent().parent().parent().attr(

我找不到这个问题的快速答案

我在点击事件中使用$this

我试图在不知道选择器的情况下选择三级以上的元素

$(this).parent().parent().parent().attr('id')
这很好,但是有更好的方法吗

像parent3x或类似的?

您可以尝试使用。eq是零基索引,所以第一个元素的索引为零,第三个元素的索引为2

$(this).parents().eq(2).attr('id');
这等于:

$(this).parent().parent().parent().attr('id');
.parents方法允许我们搜索这些对象的祖先 元素,并从 匹配从上一级直接父级排序的元素;元素 按从最接近的父级到外部父级的顺序返回,

像这样使用:

$(this).parents().eq(2).attr("id");
你也可以试试

$(this).parents(':eq(2)');  //and then get ID

次要挑剔时间:使用.prop而不是.attr获取id。@AnthonyGrist但id是属性而不是属性,对吗?@broading-如果在HTML中使用id属性,则两者都是。id属性始终存在,并在属性更改时更改。使用prop会更快,因为它查找元素的属性,而不是HTML属性。作为旁注,答案似乎都使用了父对象,这可能非常昂贵,这取决于DOM的大小。添加某种类型的标识符,并使用“最近”会更好。这种方法是完成工作的最快方法。以下是证明这一点的基准: