我正在寻找最有效的遍历特定元素叶子的方法。例如:
<div id='root'>
<ul>
<li>One</li>
<li>Two</li>
</ul>
<div>
<p>Paragraph</p>
<div>
<b>
<i>Text</i>
</b>
<u>Underline</u>
</div>
</div>
</div>
我应该得到一个数组:[<li>One</li>, <li>Two</li>, <p>Paragraph</p>, <i>Text</i>, <u>Underline</u>]
。理想情况下,它将按此顺序排列。
答案 0 :(得分:1)
不是那么优雅,但我认为这应该有效(如果允许jQuery):
$('#root *').filter(function() {
return $(this).children().length === 0;
});
答案 1 :(得分:1)
普通的“旧”Javascript
(function() {
var nodes = document.querySelectorAll("#root *"),
result;
result = [].slice.apply(nodes).filter(function(i) {
return i.childNodes.length === 1 && i.firstChild.nodeType === 3;
})
console.log(result);
}())