jQuery:找到第二个最接近的div

时间:2012-07-10 19:41:30

标签: javascript jquery

如何找到第二个最接近的div?

例如,为了获得最接近的一个,我成功地使用了:

var closest_div_id = $(this).closest('div').attr('id');

现在,我如何获得第二个最接近的?类似的东西:

$(this).(closest('div').closest('div')).attr('id'); ???

3 个答案:

答案 0 :(得分:14)

假设this不是<div>元素,您可以将选择器传递给parents()并写入:

var secondClosestId = $(this).parents("div").eq(1).attr("id");

parents()返回从最接近外部的祖先排序的祖先,因此eq()可以在这里使用。有关一般情况,请参阅this question

答案 1 :(得分:2)

jQuery#closest()将返回当前元素(如果它与选择器匹配)。所以你可以使用@Frederic建议的jQuery#parents(),也可以手动上传一个元素:

$(this).closest('div').parent().closest('div').attr('id');

那就是说,你的代码中还有另一个问题。你用括号括起了两个nearest()调用。这将导致这两个调用在其他调用之前被评估。由于您的范围内可能没有名为nearest的函数,因此给定的代码将因ReferenceError而失败。

(我只是提供这个解释为什么你的初始代码失败了,你真的应该使用@ Frederic的建议)

答案 2 :(得分:0)

为了获得比eq更好的效果,您可以使用slice

var secondClosest = $(this).parents("div").slice(1, 2).attr('id');