我理解使用.last()或:last-child等来获取元素的最后一个兄弟,但是如何在不使用任何类的情况下获得具有相同标记名称的最内部元素text()还是ids?
例如:
$(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>
当我使用循环使用$ .each返回每个div上的文本时,我将返回每个div文本的重复文本()。
提前致谢
答案 0 :(得分:2)
您可以通过组合:not()
/ :has()
选择器来选择不包含子元素的div
元素。这基本上否定了所有具有子代的div
元素:
$('div:not(:has(*))').text();
如果你想要一个数组文本字符串:
var textArray = $('div:not(:has(*))').map(function (_, el) {
return el.innerText;
}).get();
console.log(textArray);
答案 1 :(得分:0)
这是一个固有的递归问题,以下工作也是如此:
function getText(elem) {
if (elem.children().length === 0) {
console.log( elem.html() );
} else {
elem.children().each( function() {
getText($(this));
}
);
}
}
getText( $('div').first() );