【发布时间】:2012-11-30 09:03:42
【问题描述】:
是否有任何类似于closest() 的jQuery 函数将返回父链之外的元素,横向遍历?例如,我想在 div 源上调用一个函数 foo() 来返回 div 目标。我知道我可以使用 parent() 和兄弟姐妹() 进行导航,但我需要一些通用的东西,可以根据需要去往上、横向和向下等多个级别?
var allsources = $('.source');
allsources.click(function()){
$(this).closest('.target').hide();
});
<div class="row">
<div>
<div class="target" ></div>
</div>
<div>
<div>
<div class="source"></div>
</div>
</div>
</div>
<div class="row">
<div>
<div class="target" ></div>
</div>
<div>
<div>
<div class="source"></div>
</div>
</div>
</div>
编辑:
我对最接近的定义:你有一个元素来源。试着找到它。如果找到多于一个,则返回一个更少的节点箍向下/下一个/上一个。如果没有找到,请上一级,然后尝试再次找到。重复直到没有父级。
【问题讨论】:
-
向上、向侧面和向下?那是,嗯……整个 dom 树
-
没错,你有一个 ID,id 是唯一的(对吗?)所以你只需使用 id 选择器
-
nextAll() 或 prevAll() 在这里有用吗?
-
@tie,你所说的 closest 是什么意思不清楚。有两个轴和四个方向需要考虑(祖先链和兄弟链)。例如,如果有两个目标元素,一个在祖先链中排名较高,另外两个在兄弟链中排名较高,该怎么办?哪个最近?
-
看看你的编辑,你到底为什么要避开明显的
.parents('.row').find('.target')?
标签: javascript jquery