我想用最接近的方式遍历选择一个项目,我的html如下:
<span id='target'></span>
<a></a>
jQuery
assume 'a' = $(this),
then I do $(this).closest('#target');
但它似乎没有选择#target ..这里有什么问题?
我想用最接近的方式遍历选择一个项目,我的html如下:
<span id='target'></span>
<a></a>
jQuery
assume 'a' = $(this),
then I do $(this).closest('#target');
但它似乎没有选择#target ..这里有什么问题?
Closest('#target')
在这里不起作用,因为a
标签是非span#target
父级的兄弟级。用于Closest
查找这两个元素的父元素,然后进行查找以获取您的target
跨度,或者仅用于.prev
获取兄弟target
跨度。
$(this).closest("div").find("#target");
或者
$(this).prev("#target");
由于您拥有 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()将寻找祖先元素,而不是兄弟元素。
Closes 不检查兄弟姐妹,它检查元素及其父元素jQuery.closest
对于集合中的每个元素,通过测试元素本身并向上遍历其在 DOM 树中的祖先来获取与选择器匹配的第一个元素。
在您的情况下<a>
,并且<span>
是兄弟姐妹,而不是父/子 - 所以 usingclosest
不会span
从a
.