EDIT: Jest to prawdopodobnie lepsze podejście niż mój oryginalny odpowiedź:
Przykład: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'));
lub ten, który jest nawet trochę krótszy:
Przykład: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
odpowiedź oryginalny:
To wydaje się działać:
Przykład: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);
Jeśli wiesz, że najgłębszy będzie pewien znacznik (lub coś innego), możesz go przyspieszyć, np. Zamieniając .find('*')
na .find('div')
.
EDIT: Updated tylko sprawdzić długość, jeśli bieżący element nie nie mają firstChild
lub jeśli to robi, że firstChild nie jest węzłem typu 1.
Nie rozumie jako krytykę, ale jestem zafascynowany dlaczego chcesz chcą? –
Dla wszystkich, którzy znajdują to za pośrednictwem wyszukiwarek, zaktualizowałem istotę z jonathan z poprawioną wersją z patrick dw. Rozszerzyłem również nieco instrukcje. Można go znaleźć tutaj: [jQuery najgłębszy sens wtyczki] (https://gist.github.com/1014671 "jQuery najgłębszy sens wtyczki") –