0

我想用最接近的方式遍历选择一个项目,我的html如下:

<span id='target'></span>
<a></a>

jQuery

assume 'a' = $(this),
then I do $(this).closest('#target');

但它似乎没有选择#target ..这里有什么问题?

4

3 回答 3

2

Closest('#target')在这里不起作用,因为a标签是非span#target父级的兄弟级。用于Closest查找这两个元素的父元素,然后进行查找以获取您的target跨度,或者仅用于.prev获取兄弟target跨度。

$(this).closest("div").find("#target");

或者

$(this).prev("#target");
于 2013-10-26T05:52:52.223 回答
1

由于您拥有 id,因此您可以将其用作 id 选择器,因为 id 在文档中将是唯一的 - 在这种情况下无需使用任何关系查找。

var target = $('#target')

如果您有像上面这样的模式,其中一个anchor元素后跟一个span元素,那么使用类属性而不是id. 在这种情况下,这span是元素的前一个兄弟anchor元素,因此您需要使用.prev()

<span class='target'></span>
<a></a>

var target = $(this).prev('.target');// $(this).prev() is sufficient 

.closest()将寻找祖先元素,而不是兄弟元素。

于 2013-10-26T05:50:09.957 回答
0

Closes 不检查兄弟姐妹,它检查元素及其父元素jQuery.closest

对于集合中的每个元素,通过测试元素本身并向上遍历其在 DOM 树中的祖先来获取与选择器匹配的第一个元素。

在您的情况下<a>,并且<span>是兄弟姐妹,而不是父/子 - 所以 usingclosest不会spana.

于 2013-10-26T05:54:37.537 回答