編輯:這可能是比我原來的答覆更好的方法:
例子:http://jsfiddle.net/patrick_dw/xN6d5/5/
var $target = $('#SearchHere').children(),
$next = $target;
while($next.length) {
$target = $next;
$next = $next.children();
}
alert($target.attr('id'));
或這是連短一點:
例子:http://jsfiddle.net/patrick_dw/xN6d5/6/
var $target = $('#SearchHere').children();
while($target.length) {
$target = $target.children();
}
alert($target.end().attr('id')); // You need .end() to get to the last matched set
原來的答覆:
這似乎工作:
例子:http://jsfiddle.net/xN6d5/4/
var levels = 0;
var deepest;
$('#SearchHere').find('*').each(function() {
if(!this.firstChild || this.firstChild.nodeType !== 1 ) {
var levelsFromThis = $(this).parentsUntil('#SearchHere').length;
if(levelsFromThis > levels) {
levels = levelsFromThis;
deepest = this;
}
}
});
alert(deepest.id);
如果您知道最深處將是某個標記(或其他標記),則可以通過將.find('*')
替換爲.find('div')
來加速它。
編輯:更新以只檢查長度如果當前元素確實不具有firstChild
或如果這樣做,該則firstChild不是一個類型1節點。
並不意味着作爲一個批評,但我對你爲什麼會想着迷? – 2010-09-24 14:26:50
對於所有那些通過搜索引擎發現的人來說,我從喬納森的patrick dw的改進版本中更新了主旨。還擴大了一點點的指示。你可以在這裏找到它:[jQuery最深的插件要點](https://gist.github.com/1014671「jQuery最深的插件要點」) – 2011-06-08 15:54:54