是否有类似于jQuery
.closest()
的函数,但用于遍历子节点并仅返回最近的子节点?
我知道有.find()
函数,但它返回所有可能的匹配,而不是最接近的匹配。
编辑:
这里是最接近的定义(至少对我来说)
首先遍历所有的孩子,然后遍历每个单独的孩子。
在下面给出的示例中,id='2'
是id="find-my-closest-descendant"
最接近的.closest
后代
<div id="find-my-closest-descendant">
<div>
<div class="closest" Id='1'></div>
</div>
<div class="closest" Id='2'></div>
</div>
请参阅JSfiddle link。
发布于 2012-01-22 23:06:49
根据您对closest
的定义,我编写了以下插件:
(function($) {
$.fn.closest_descendent = function(filter) {
var $found = $(),
$currentSet = this; // Current place
while ($currentSet.length) {
$found = $currentSet.filter(filter);
if ($found.length) break; // At least one match: break loop
// Get all children of the current set
$currentSet = $currentSet.children();
}
return $found.first(); // Return first match of the collection
}
})(jQuery);
发布于 2012-01-22 22:31:53
如果你说的“最接近”的后代是指第一个孩子,那么你可以这样做:
$('#foo').find(':first');
或者:
$('#foo').children().first();
或者,要查找特定元素的第一个匹配项,您可以执行以下操作:
$('#foo').find('.whatever').first();
或者:
$('#foo').find('.whatever:first');
实际上,我们需要一个可靠的定义来定义“最接近的后代”是什么意思。
例如。
<div id="foo">
<p>
<span></span>
</p>
<span></span>
</div>
$('#foo').closestDescendent('span')
会返回哪个<span>
?
发布于 2012-01-22 22:31:32
您可以将find
与:first
选择器一起使用:
$('#parent').find('p:first');
上面的代码行将在#parent
的后代中找到第一个<p>
元素。
https://stackoverflow.com/questions/8961770
复制相似问题