我想使用最接近遍历选择项目,我的html如下:
<span id='target'></span>
<a></a>
jquery的
assume 'a' = $(this),
then I do $(this).closest('#target');
但似乎没有选择#target ..这里有什么问题?
答案 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
。在这种情况下,span
是anchor
元素的上一个兄弟,因此您需要使用.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
。