JQuery, чтобы найти последний вложенный элемент

76
7

Я понимаю использование использования.last() или: last-child и т.д., Чтобы получить последний родственный элемент, но как получить самый внутренний элемент text() с тем же именем тега без использования каких-либо классов или идентификаторов?

Например:

$(body).find('div').text();
<div>
<div>
<div>
<div>Get this text</div>
</div>
</div>
<div>
<div>
<div>
<div>
<div>And get this text</div>
</div>
</div>
</div>
</div>
</div>

Когда я использовал цикл для возврата текста на каждый div, используя $.each, я возвращаю дубликаты текста для каждого div text().

заранее спасибо

спросил(а) 2021-01-28T02:37:35+03:00 3 месяца, 1 неделя назад
1
Решение
76

Вы можете выбрать элементы div которые не содержат дочерний элемент, объединив селектора :not()/ :has(). Это по существу отрицает все элементы div, у которых есть ребенок:

$('div:not(:has(*))').text();

Если вам нужны строки массива:

Пример здесь

var textArray = $('div:not(:has(*))').map(function (_, el) {
return el.innerText;
}).get();

console.log(textArray);

ответил(а) 2021-01-28T02:37:35+03:00 3 месяца, 1 неделя назад
45

Это неотъемлемо рекурсивная проблема, и следующая работа тоже:


function getText(elem) {
if (elem.children().length === 0) {
console.log( elem.html() );
} else {
elem.children().each( function() {
getText($(this));
}
);
}
}

getText( $('div').first() );

ответил(а) 2021-01-28T02:37:35+03:00 3 месяца, 1 неделя назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема