如何找到第二个最接近的div?
例如,为了获得最接近的一个,我成功地使用了:
var closest_div_id = $(this).closest('div').attr('id');
现在,我如何获得第二个最接近的?类似的东西:
$(this).(closest('div').closest('div')).attr('id'); ???
答案 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');