从 li 获取文本和 id 值



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

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>

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

问候

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

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

由于 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>";
}

最新更新