EDIT: Ceci est probablement une meilleure approche que ma réponse originale:
Exemple: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'));
ou ce qui est encore une peu plus court:
Exemple: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
réponse originale:
Cela semble fonctionner:
Exemple: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);
Si vous savez que le plus profond sera un certain tag (ou quelque chose d'autre), vous pouvez l'accélérer en remplaçant .find('*')
par .find('div')
par exemple.
EDIT: Mise à jour de seulement vérifier la longueur si l'élément actuel ne pas ont une firstChild
ou si elle le fait, que le firstChild est pas un noeud de type 1.
ne se veut pas une critique, mais je suis fasciné par pourquoi vous voulez? –
Pour tous ceux qui trouvent cela à travers les moteurs de recherche, j'ai mis à jour l'essentiel de jonathan avec la version améliorée de patrick dw. Élargis également les instructions un peu. Vous pouvez le trouver ici: [jQuery plus profond plugin gist] (https://gist.github.com/1014671 "jQuery plus profond plugin gist") –