好吧,从您不知道这个“最深”节点在哪里的基础开始,您可以执行以下操作:
$.fn.deepest = function() {
var depth = 0;
this.find('*').each(function() {
var d = $(this).parents().length;
depth = Math.max(d, depth);
});
return this.find('*').filter(function() {
return this.parents().length === depth;
});
});
然后
var $deepest = $('body').deepest();
将(除了可能在我的代码中的 12 个错误)将是最深元素集的 jQuery 对象。
编辑- 我的十几个错误之一是这没有考虑起始节点的深度 - 这将是一个弄清楚的技巧。重构它可能会更好,以便它找到最初选择的列表中最深的:
$.fn.betterDeepest = function() {
var depth = 0;
this.each(function() {
depth = Math.max(depth, $(this).parents().length);
});
return this.filter(function() { return $(this).parents().length === depth; });
});
并在页面上获得最深的内容:
var deepest = $('*').betterDeepest();