nearest()遍历不适用于我的情况

时间:2013-10-26 05:48:17

标签: jquery

我想使用最接近遍历选择项目,我的html如下:

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

jquery的

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

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

3 个答案:

答案 0 :(得分:2)

Closest('#target')无法在此工作,因为a标记是span#target的兄弟,而不是父母。使用Closest查找这两个元素的父元素,然后执行查找以获取target范围,或者只使用.prev获取兄弟target范围。

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

$(this).prev("#target");

答案 1 :(得分:1)

由于你有id和id,你可以将它用作id-selector,因为id在文档中是唯一的 - 在这种情况下不需要使用任何关系查找。

var target = $('#target')

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

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

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

.closest()会寻找一个祖先元素,而不是兄弟姐妹。

答案 2 :(得分:0)

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

  

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

在您的情况下,<a><span>是兄弟姐妹,而不是父/子 - 因此使用closest将从span开始找不到a