jQuery向上选择2个div

jQuery向上选择2个div,jquery,css-selectors,Jquery,Css Selectors,我对如何正确选择父项有点困惑,这是2 DIV向上 换句话说,我的HTML如下所示: <div>Folder</div> <div class="file_info"> <a href="test.jpg">Test File</a> </div> 文件夹 这是我当前的jQuery:$([a[href$='.jpg'])。addClass(“Image”) 但是,我不想将该类添加到,而是想将该类添加到上面的'f

我对如何正确选择父项有点困惑,这是2 DIV向上

换句话说,我的HTML如下所示:

 <div>Folder</div>
 <div class="file_info">
   <a href="test.jpg">Test File</a>
 </div>
文件夹
这是我当前的jQuery:
$([a[href$='.jpg'])。addClass(“Image”)

但是,我不想将该类添加到
,而是想将该类添加到上面的'folder'2 DIV

最好的方法是什么


谢谢

考虑到jQuery的健壮性,几乎总是有不止一种方法来完成您需要做的事情-以下是一些选择元素的方法:

$("a[href$='.jpg']").parent().parent().addClass('Image');
$("a").parent().parent();
这与听起来的完全一样——它选择了锚的父对象的父对象。父元素是直接围绕目标元素的元素。在本例中,两次都是
div
元素

$("a").parents("div:eq(1)");
在本例中,请注意,我们使用的是复数形式的parents。这将查找元素的所有父元素,然后将其作为集合返回。然后,我们通过提供特定的选择来指定希望在集合中返回哪些父级:
div:eq(1)

这表示我们需要
div
元素,但特别是那些位于结果集合中位置2的
div
元素。根据定义,位置2只能包含一个元素,因此我们只返回一个元素-祖父元素

如果您对我在请求等于(
:eq
1
div
时将其称为“位置2”感到困惑,请记住JavaScript使用的是基于零的索引系统,因此集合中的第一项位于索引0,第二项位于索引1,依此类推

$("a").parents("div").get(1);
另一个示例与上一个类似,它使用
.get
。这也需要
.parents
方法为我们提供所有
div
元素。这将返回一个包含
div
元素的jQuery对象(假设父树中包含
div
元素)

.get
方法获取一个索引,对应于我们想要检索的元素。在本例中,我们正在查找第二个
div
元素,该元素将再次保存在调用
.parents
产生的集合的索引1中

需要注意的一点是,与前面的示例不同,这个示例返回的是实际的
htmldevelment
,而不是jQuery对象。不同之处在于,除非在
$()

中再次包装jQuery方法,否则无法从
htmldevelment
调用jQuery方法。这将起作用:

$("a[href$='.jpg']").parent().prev().addClass("Image");
它首先导航到所选元素的父元素,然后导航到该元素之前最近的同级元素,从而到达所需的
div
元素

有关更多详细信息,请参阅和的文档