Jquery找到最后一个嵌套元素

时间:2015-11-13 17:30:57

标签: javascript jquery html

我理解使用.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文本的重复文本()。

提前致谢

2 个答案:

答案 0 :(得分:2)

您可以通过组合:not() / :has()选择器来选择不包含子元素的div元素。这基本上否定了所有具有子代的div元素:

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

如果你想要一个数组文本字符串:

Example Here

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() );