从li获取text和id值

时间:2015-03-13 23:26:12

标签: javascript jquery html

我一直陷入这种愚蠢的境地,我得到了一个这样的无序列表:

var liList = $("#first").find("li");

var append = "";

for(var i =0; i< liList.length; i++){
  var item = $(liList);
  append += "<option value=" + item.prop("id") + ">" + item.text() + "</option";
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul id="first">
  <li id=1>
    li 1
    <ul>
      <li id=2> li 2</li>
    </ul>
  </li>
</ul>

我想获取unorder列表中每个li的文本和id,但是在item.text()代码部分我得到了当前的li文本和子文本(“li1li2”,“li2”等)。有什么建议吗?。

此致

2 个答案:

答案 0 :(得分:2)

您可以使用.childNodes[0].nodeValue从DOM元素(在您的案例中恰好是文本)中获取值第一个节点:

append += "<option value=" + item.prop("id") + ">" + item[0].childNodes[0].nodeValue + "</option";

答案 1 :(得分:0)

由于liList是一个包含所有li元素的数组,因此必须遍历循环中的每个元素:

for(var i = 0; i < liList.length; i++) {
  // retreive each element from the array
  var item = $(liList[i]);
  append += "<option value=" + item.prop("id") + ">" + item.text() + "</option>";
}