0

私は特定の要素の葉を横断する最も効率的な方法を探しています。例えば:

<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>]。理想的にはこの順序になります。

4

2 に答える 2

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

于 2012-08-15T19:16:55.017 に答える
1

それほどエレガントではありませんが、これは機能するはずです(jQueryが許可されている場合):

$('#root *').filter(function() {
    return $(this).children().length === 0;
});

デモンストレーション: http: //jsfiddle.net/9nFQ8/1/

于 2012-08-15T19:01:05.527 に答える