如何获得ul的所有后裔li甚至在另一个ul

时间:2015-10-09 01:23:13

标签: javascript jquery selector attr

我怎样才能得到"所有"在ul#div下的li的attr(" class")并将其作为数组返回,而不重复相同的类值?

<ul id="div">
  <li class="a"></li>
  <li class="aa">
    <ul id="set">
      <li class="aa1"></li>
      <li class="aa2"></li>
    </ul>
  </li>
  <li class="aaa"></li>
  <li class="aaa"></li>
  <li class="aaa"></li>
  <li class="a"></li>  
</ul>
我正在寻找像这样的回报:

返回数组中的类(a,aa,aa1,aa2,aaa)

2 个答案:

答案 0 :(得分:1)

获取具有<li>属性的<ul>的所有class个后代,将其变为标准数组,然后获取每个类。

&#13;
&#13;
var classes = $('ul li[class]').toArray().map(function(el) { return el.className });
console.log(classes);
&#13;
<!-- results pane console output; see http://meta.stackexchange.com/a/242491 -->
<script src="http://gh-canon.github.io/stack-snippet-console/console.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul id="div">
  <li class="a"></li>
  <li class="aa">
    <ul id="set">
      <li class="aa1"></li>
      <li class="aa2"></li>
    </ul>
  </li>
  <li class="aaa"></li>
  <li class="aaa"></li>
  <li class="aaa"></li>
  <li class="a"></li>  
</ul>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

使用纯JavaScript,你可以做这样的事情

var node = document.getElementById("div");
var children = node.childNodes;
var output = [];
for (var i = 0; i < children.length; i++)
{
    if (typeof children[i].className !== "undefined")
        output.push(children[i].className);
}